所以我想获取一个具有两个不同列的除法值的新列。我正在尝试对多个dfs执行此操作。我知道循环可以在没有Assign函数的情况下工作,但是不幸的是,它并没有将其保存在全局环境中。
vect
是具有多个数据帧的向量
for (i in vect) {
i$new <- i[,2] / i[,3]
print(i)
}
我正在寻找一种可行的方式来重写它:
assign(i$new, i[,2] / i[,3],envir = .GlobalEnv)
答案 0 :(得分:0)
您可以使用lapply将新列绑定到列表中的每个数据帧中。
dfs <- list(df1 <- data.frame(x = c(1,2,3,4,5),
y = c(2,3,4,5,6)),
df2 <- data.frame(x = c(5,6,7,8,9),
y = c(1,3,4,5,6)))
dfs <- lapply(dfs, function(d){
new <- d$x/d$y
cbind(d, new)} )
dfs
> dfs
[[1]]
x y new
1 1 2 0.5000000
2 2 3 0.6666667
3 3 4 0.7500000
4 4 5 0.8000000
5 5 6 0.8333333
[[2]]
x y new
1 5 1 5.00
2 6 3 2.00
3 7 4 1.75
4 8 5 1.60
5 9 6 1.50