首页 > 解决方案 > 在 R 中结合 For 和 If 循环

问题描述

只有存在该变量名时,我才希望在 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 的元素视为变量名。

标签: r

解决方案


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

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

推荐阅读