我制作了一个函数,该函数根据数据框和数据框名称中的两列创建一个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
谁能解释我为什么会这样以及如何解决?我想以函数的形式将其应用于我拥有的许多数据帧。
谢谢
答案 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)
}