如何在列表中的数据框中将lapply中的新值分配给新列

时间:2015-03-02 22:17:41

标签: r dataframe lapply

我有一个数据框列表。我想对数据框的列执行操作,然后在数据框中使用生成的新列创建一个新列。

a <- data.frame(c(1,2,3), c(2,3,4))
b <- data.frame(c(7,8,9), c(5,6,2))
l <- list(a, b)
lapply(l, function(x) x[,2]*2)

我想要的是将4 6 810 12 4分别分配给第一个和第二个数据帧的第三列。

这似乎不起作用:

lapply(l, function(x) x[,2]*2 -> x$new)

1 个答案:

答案 0 :(得分:3)

您可以使用cbind将新列添加到列表中的数据框中:

lapply(l, function(x) cbind(x, x[,2]*2))
# [[1]]
#   c.1..2..3. c.2..3..4. x[, 2] * 2
# 1          1          2          4
# 2          2          3          6
# 3          3          4          8
# 
# [[2]]
#   c.7..8..9. c.5..6..2. x[, 2] * 2
# 1          7          5         10
# 2          8          6         12
# 3          9          2          4