通过修改包含数据框的列表来反映数据框中的更改

时间:2014-07-15 11:29:49

标签: r list dataframe

我有一个包含几个数据框的列表。我在列表中应用lapply并将输出定向到相同的列表本身。我希望这会改变数据帧本身,但事实并非如此。有人可以帮忙吗?我想它应该很直接,但找不到任何有用的东西。

感谢。

示例数据:(来源:Change multiple dataframes in a loop

data_frame1 <- data.frame(a=c(1,5,3,3,2), b=c(3,6,1,5,5), c=c(4,4,1,9,2))
data_frame2 <- data.frame(a=c(6,0,9,1,2), b=c(2,7,2,2,1), c=c(8,4,1,9,2))
data_frame3 <- data.frame(a=c(0,0,1,5,1), b=c(4,1,9,2,3), c=c(2,9,7,1,1))

ll <- list(data_frame1,data_frame2,data_frame3)
ll <- lapply(ll,function(df){
df$log_a <- log(df$a)          ## new column with the log a
  df$tans_col <- df$a+df$b+df$c  ## new column with sums of some columns or any other           
  df
})

结果:

ll
[[1]]
  a b c     log_a tans_col
1 1 3 4 0.0000000        8
2 5 6 4 1.6094379       15
3 3 1 1 1.0986123        5
4 3 5 9 1.0986123       17
5 2 5 2 0.6931472        9

[[2]]
  a b c     log_a tans_col
1 6 2 8 1.7917595       16
2 0 7 4      -Inf       11
3 9 2 1 2.1972246       12
4 1 2 9 0.0000000       12
5 2 1 2 0.6931472        5

[[3]]
  a b c    log_a tans_col
1 0 4 2     -Inf        6
2 0 1 9     -Inf       10
3 1 9 7 0.000000       17
4 5 2 1 1.609438        8
5 1 3 1 0.000000        5





data_frame1
  a b c
1 1 3 4
2 5 6 4
3 3 1 1
4 3 5 9
5 2 5 2

0 个答案:

没有答案