如何在数据框列表上添加具有特定值的列

时间:2020-06-15 07:18:47

标签: r

我有一个数据框列表。我想为每个数据框添加一个固定值的列。这是功能的计划输入:

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)
}

但是它没有按计划工作。有什么想法吗?

2 个答案:

答案 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]))