gpt4 book ai didi

r - 使用 lapply 更改列表中数据框的列名

转载 作者:行者123 更新时间:2023-12-05 09:02:05 24 4
gpt4 key购买 nike

我想根据数据框的名称向列表中数据框的列名添加前缀:

list1 <- vector("list", 6)

list1 <- lapply(list1, function(x) data.frame(replicate(10,sample(0:1,10,rep=TRUE))))
list1 <- lapply(list1, function(x) {colnames(x)<- letters[1:10];x})
names(list1) <- LETTERS[1:6]

在这一点上,我想用类似的东西来改变colnames:

    colnames(list1[[1]]) <- paste(names(list1[1]), colnames(list1[[1]]), sep=".")
colnames(list1[[1]])
[1] "A.a" "A.b" "A.c" "A.d" "A.e" "A.f" "A.g" "A.h" "A.i" "A.j"

我如何在六个数据帧中的每一个上依次执行此操作?我试过了

lapply(list1, function(x) {colnames(list1[x]) <- paste(names(list1[x]), colnames(list1[[x]]), sep=".");x })

但是

Error in list1[x] : invalid subscript type 'list'

我猜它是关于循环遍历 list1 的名称?或者它是如何完成的?

感谢您的帮助。

最佳答案

使用基础 R,您可以使用 Map .

Map(function(x, y) setNames(x, paste(names(x), y, sep = ".")), list1, names(list1))

这是使用 purrr 的另一种方式. i函数(例如 imap、imodify)会将列表项的名称作为参数传递给 .y以及 .x 中的列表内容.

library(purrr)

imodify(list1, ~ set_names(.x, paste(names(.x), .y, sep = ".")))

关于r - 使用 lapply 更改列表中数据框的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72015865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com