使用 lapply 设置数据框列表的列名?

Using lapply to set column names for a list of data frames?

我是 R 的新手,但我正在尝试创建一个数据框列表,然后在循环中为它们提供相同的 headers。计划是用一堆杂乱数据文件中的数据填充列,然后将小数据框绑定到一个数据框。但是,我坚持分配列名。我确实首先尝试了一个 for 循环,但看到其他答案说这是新手的方法。

这是我现在拥有的,但是当我 运行 它时,列不会更新:

a <- data.frame(matrix(ncol=5, nrow=1))
b <- data.frame(matrix(ncol=5, nrow=1))
c <- data.frame(matrix(ncol=5, nrow=1))
d <- data.frame(matrix(ncol=5, nrow=1))

List <- list(a, b, c, d)
headers <- c("First Name","Last Name","Date","Zip Code", "blah")

lapply(List, setNames, nm = headers)

我想我遗漏了一些关于如何在 R 中更新数据框的信息,因为我确实打印了 4 个具有正确列名的空数据框。所以该功能正在应用于某些东西!但它没有更新我的列表,我不明白为什么。

谢谢!

我们可以使用

设置列名
List = lapply(List, function(x) `colnames<-`(x, headers))

您似乎想更新原始数据框。在这种情况下,您的列表必须被命名。即检查下面的代码。

List <- list(a = a, b = b, c = c, d = d)
list2env(lapply(List, setNames, nm = headers), globalenv())

现在,如果您调用 a,您会注意到它已更新。