将列表中的数据框名称应用于R中的特定列

时间:2018-07-12 20:41:38

标签: r dataframe

我有一个数据帧列表,每个数据帧均根据类型命名。所有数据框具有相同的列名。我想将每个数据框的名称应用于该数据框的一个特定列。

df1 <- data.frame(var_a = 1, var_b = 2, var_X = 3)
df2 <- data.frame(var_a = 4, var_b = 5, var_X = 6)
types <- c("typeA", "typeB")
lst <- list(df1, df2)
names(lst) <- types

这给了我

> lst
$typeA
  var_a var_b var_X
1     1     2     3

$typeB
  var_a var_b var_X
1     4     5     6

我希望它将每个数据帧中的var_x更改为相应的类型。

我尝试遍历types中的元素,以使用它来子集到相应的列表项:

for (i in types) {
  colomnnames <- c("var_a", "var_b", types[i])
  colnames(lst[[i]]) <- colomnnames
}

但是,这会将最后一列的名称更改为NA。我想念什么?

1 个答案:

答案 0 :(得分:1)

您遇到的问题在以下行的for循环中:

colomnnames <- c("var_a", "var_b", types[i])

将其更改为:

colomnnames <- c("var_a", "var_b", i)