对于如下所示的数据框,我想使用 for 循环遍历每个数据框并添加一些新列 say new&new1到数据框d1和d2. 以下是我尝试过的。
d1 <- data.frame(y1 = c(1, 2, 3), y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2, 1), y2 = c(6, 5, 4))
my.list <- list(d1, d2)
for(df in my.list) {
df$new <- df$y1 + df$y2
df$new1 <- df$y1 - df$y2
}
Run Code Online (Sandbox Code Playgroud)
但是,当我查看原始数据框时d1,d2它们没有显示新的 col new。
> colnames(d1)
[1] "y1" "y2"
> colnames(d2)
[1] "y1" "y2"
Run Code Online (Sandbox Code Playgroud)
我如何获得有关获取添加到原始数据帧新的列d1和d2?
这是一个选项lapply
lst <- lapply(my.list, transform, new = y1 + y2, new1 = y1 - y2)
Run Code Online (Sandbox Code Playgroud)
最好将“data.frame”保留在list全局环境中,而不是更新全局环境中的对象。但是,如果真的需要的话
list2env(lst, envir = .GlobalEnv)
d1
# y1 y2 new new1
#1 1 4 5 -3
#2 2 5 7 -3
#3 3 6 9 -3
Run Code Online (Sandbox Code Playgroud)
my.list <- mget(paste0("d", 1:2))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
937 次 |
| 最近记录: |