我有一个包含30个数据的数据集,我编写了一个循环来将所有这些数据读入环境。 (这很好)。
它们都有相同的6个变量,我想写一个循环,以获得所有这些变量的新变量。此变量应包含两个其他变量的减法。两者都是数字。那就是我的代码。
list <- c("Data1", "Data2", "Data3", "Data4")
for (i in list){
i[,7] <- i[,5] - i[,2]
}
Get this:
Error in i[, 5] : incorrect number of dimensions
R无法将i
标识为列表中的变量。但我不知道为什么,因为在循环之前(将所有数据读入环境)它的工作完美!我也试着写i$Variable7 <- i$Variable5 - i$Variable2
,但也不行。
答案 0 :(得分:0)
我们可以在list
中获取数据集,使用list
循环遍历lapply
,使用第5列和第2列的差异更新第7列
lst <- lapply(mget(list), function(x) {x[,7] <- x[,5] - x[,2]; x})
如果我们真的想要更新原始数据集对象,
list2env(lst, envir = .GlobalEnv)
OP的代码不起作用的原因是因为它循环遍历字符串而没有获取数据集对象的值