我有一个数据框列表。我想为每个数据框添加一个固定值的列。这是功能的计划输入:
ar_data <-add_cols(ar_data,c(“ Data_source1”,“ Data_source2”,“ Data_source3”))
例如,数据框(ar_data)列表中的第一个数据框需要添加一列(该列将在列表中的所有数据框内被命名为“ type”),其值为“ Data_source1”。列表中的第二个数据框将添加一列,其值为“ Data_source2”,依此类推...
这是我尝试的功能:
add_cols <- function(data, col_value) {
data <- map2(data, col_value, function(x, y) x['type'] = y)
return(data)
}
但是它没有按计划工作。有什么想法吗?
答案 0 :(得分:1)
您可以使用Map
:
add_cols <- function(data, col_value) {
Map(cbind, data, type = col_value)
#Using `map2` from `purrr`
#purrr::map2(data, col_value, ~cbind(.x, type = .y))
}
add_cols(ar_data, c("Data_source1", "Data_source2", "Data_source3"))
尝试中,您需要在添加列后返回数据框。所以应该可以。
data <- map2(data, col_value, function(x, y) {x['type'] = y;x})
答案 1 :(得分:0)
我们也可以使用lapply
lapply(seq_along(data), function(i) transform(data[[i]], type = col_value[i]))