在R中组合For和If循环

时间:2020-05-24 11:31:37

标签: r

仅当该变量名称存在时,我希望在R中合并表。同样,我用一个可能存在或不存在的各种表名制作了一个变量。然后添加“ for”和“ if”循环以合并表。所有表(如果存在)都有一个公用的“名称”列。我输入的代码如下:

Designation.Attrition1<- data.frame(names)
x<- c("despivot2020new", "despivot2019new", "despivot2018new", "despivot2017new")
for( i in 1: length(x)){if (exists(x[i])){Designation.Attrition1<- merge(Designation.Attrition1, x[i] , by = "names")}}

但是,我收到的错误是“ fix.by(by.y,y)中的错误:'by'必须指定唯一有效的列”。

错误的原因之一,可能是合并功能未能将x的元素视为变量名。

1 个答案:

答案 0 :(得分:0)

x[i]仍然是字符串,而不是数据帧。合并之前,请先尝试get数据。

for( i in seq_along(x)) {
   if (exists(x[i])) {
    Designation.Attrition1 <- merge(Designation.Attrition1,get(x[i]),by = 'names')
   }
})