如何向列表中的数据框添加列?
How do you add a column to data frames in a list?
我有一个数据框列表。我想为每个数据框添加一个新列。比如我有如下三个数据框:
a = data.frame("Name" = c("John","Dor"))
b = data.frame("Name" = c("John2","Dor2"))
c = data.frame("Name" = c("John3","Dor3"))
然后我将它们放入列表中:
dfs = list(a,b,c)
然后我想为每个数据框添加一个具有唯一值的新列,例如:
dfs[1]$new_column <- 5
但是我得到以下错误:
"number of items to replace is not a multiple of replacement length"
我也试过用两个括号:
dfs[[1]]$new_column <- 5
这不是 return 错误,但不会添加该列。
这将在 'for' 循环中,并且将向每个数据帧添加不同的值。
如有任何帮助,我们将不胜感激。提前致谢!
假设您要为每个数据框添加一个值为 5:7
的新列。我们可以使用 Map
new_value <- 5:7
Map(cbind, dfs, new_column = new_value)
#[[1]]
# Name new_column
#1 John 5
#2 Dor 5
#[[2]]
# Name new_column
#1 John2 6
#2 Dor2 6
#[[3]]
# Name new_column
#1 John3 7
#2 Dor3 7
有了 lapply
你可以做到
lapply(seq_along(dfs), function(i) cbind(dfs[[i]], new_column = new_value[i]))
或者如@camille 所述,如果您在 for
循环
中使用 [[
进行索引,它会起作用
for (i in seq_along(dfs)) {
dfs[[i]]$new_column <- new_value[[i]]
}
等效的 purrr
版本是
library(purrr)
map2(dfs, new_value, cbind)
和
map(seq_along(dfs), ~cbind(dfs[[.]], new_colum = new_value[.]))
我有一个数据框列表。我想为每个数据框添加一个新列。比如我有如下三个数据框:
a = data.frame("Name" = c("John","Dor"))
b = data.frame("Name" = c("John2","Dor2"))
c = data.frame("Name" = c("John3","Dor3"))
然后我将它们放入列表中:
dfs = list(a,b,c)
然后我想为每个数据框添加一个具有唯一值的新列,例如:
dfs[1]$new_column <- 5
但是我得到以下错误:
"number of items to replace is not a multiple of replacement length"
我也试过用两个括号:
dfs[[1]]$new_column <- 5
这不是 return 错误,但不会添加该列。
这将在 'for' 循环中,并且将向每个数据帧添加不同的值。
如有任何帮助,我们将不胜感激。提前致谢!
假设您要为每个数据框添加一个值为 5:7
的新列。我们可以使用 Map
new_value <- 5:7
Map(cbind, dfs, new_column = new_value)
#[[1]]
# Name new_column
#1 John 5
#2 Dor 5
#[[2]]
# Name new_column
#1 John2 6
#2 Dor2 6
#[[3]]
# Name new_column
#1 John3 7
#2 Dor3 7
有了 lapply
你可以做到
lapply(seq_along(dfs), function(i) cbind(dfs[[i]], new_column = new_value[i]))
或者如@camille 所述,如果您在 for
循环
[[
进行索引,它会起作用
for (i in seq_along(dfs)) {
dfs[[i]]$new_column <- new_value[[i]]
}
等效的 purrr
版本是
library(purrr)
map2(dfs, new_value, cbind)
和
map(seq_along(dfs), ~cbind(dfs[[.]], new_colum = new_value[.]))