为什么函数为每个单元分配多个值,并针对存储单个值的单个数据帧单独运行它?

时间:2018-08-08 08:21:26

标签: r function dataframe

我制作了一个函数,该函数根据数据框和数据框名称中的两列创建一个ID号:

edit_dfs<-function(x){
      x["ID"]<-paste0(gsub("_.",replacement="",x),"_",x[["ua1"]],"_",x[["ua2"]])
      return(x)
    }

但是当我运行此函数时,我会得到多个值,例如:

test<-edit_dfs(I_df1)
> test["ID"]
# A tibble: 702 x 1
   ID                                                                                                                             
   <chr>                                                                                                                          
 1 "c(\"1\", \"1\", \"1\", ...continues

但是,当我为每个数据帧分别运行代码时,它可以按我的意愿工作,例如:

I_df["ID"]<-paste0(gsub("_.",replacement="","I_df"),"_",I_df[["ua1"]],"_",I_df[["ua2"]])
> I_df["ID"]
# A tibble: 702 x 1
   ID    
   <chr> 
 1 I_1_NA
 2 I_1_NA
 3 I_2_NA
Continues...and it is the result that I want

谁能解释我为什么会这样以及如何解决?我想以函数的形式将其应用于我拥有的许多数据帧。

谢谢

1 个答案:

答案 0 :(得分:0)

@Juan Antonio Roldán Diaz你是对的,我不敢相信我没有注意到这一点。 非常感谢您的帮助。我使用deparse(substitute(x))

解决了问题
edit_dfs<-function(x){
  x["ID"]<-paste0(gsub("_.",replacement="",deparse(substitute(x))),"_",x[["ua1"]],"_",x[["ua2"]])
return(x)
    }