使用lapply更改列表中数据框的列名
我想根据数据框的名称在列表中的数据框中添加一个前缀:
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"
我该如何在六个dataframes中的每个范围内依次进行此操作?我尝试过
lapply(list1, function(x) {colnames(list1[x]) <- paste(names(list1[x]), colnames(list1[[x]]), sep=".");x })
,但
Error in list1[x] : invalid subscript type 'list'
我想这是关于骑自行车的名称1?还是如何完成?
感谢您的帮助。
I want to add a prefix to the colnames of dataframes in a list, based on the name of the dataframe:
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]
At this point, i want to change the colnames with something like:
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"
How can i do this sequentally on each of the six dataframes? I tried
lapply(list1, function(x) {colnames(list1[x]) <- paste(names(list1[x]), colnames(list1[[x]]), sep=".");x })
but
Error in list1[x] : invalid subscript type 'list'
I guess its about cycling through the names of list1? Or how is it done?
Thanks for your help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用基本R,您可以使用
MAP
。这是使用
purrr
的另一种方式。i
函数(例如,imap,imodify)将在as parameter.y
中传递列表项目的名称,以及.x 。
Using base R, you can use
Map
.Here is another way using
purrr
. Thei
functions (e.g., imap, imodify) will pass the name of the list item in as parameter.y
along with the list contents in.x
.另一种方式,如果您已经准备好数据框,并且想在每个数据框的名称之前将列前缀:
another way, if you have your dataframes already prepared and want to prefix columns with each dataframe's name:
修改
attr
ibutes可能更快。Modifying
attr
ibutes might be faster.