如何将 lapply 中的新值分配给列表中数据框中的新列
How to assign new values from lapply to new column in dataframes in list
我有一个数据帧列表。我想对数据帧的列执行操作,然后使用生成的新列在数据帧中创建一个新列。
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 8
和 10 12 4
分别分配给第一个和第二个数据帧的第三列。
这似乎不起作用:
lapply(l, function(x) x[,2]*2 -> x$new)
您可以使用 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
我有一个数据帧列表。我想对数据帧的列执行操作,然后使用生成的新列在数据帧中创建一个新列。
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 8
和 10 12 4
分别分配给第一个和第二个数据帧的第三列。
这似乎不起作用:
lapply(l, function(x) x[,2]*2 -> x$new)
您可以使用 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