我有一个长度为“x”的列表,我想使用此列表中相同长度的字符向量更改此列表中所有data.frames的列名称,如下所述:
a <- data.frame(rep(1:10), letters[1:10])
b <- data.frame(rep(11:20), letters[11:20])
l <- list(a,b)
nm <- c("letters1:10","letters11:20")
我想要类似的东西:
colnames(l[[1]]); colnames(l[[2]])
给了我
[1] "rep.1.10." "letters.1.10."
[1] "rep.11.20." "letters.11.20."
我试过lapply(l, function(x) colnames(x)[2]<-nm)
但它只返回一个仅包含nm的列表,我想要一个包含原始data.frames和更新的colnames的列表。
谢谢。
答案 0 :(得分:1)
Cludgy,但似乎有效(如果我已经理解了这个问题)。
lapply(as.list(1:2), function(x){colnames(l[[x]])[2] <- nm[x];l[[x]]})
答案 1 :(得分:0)
Map( function(x,y){colnames(x)[2] <-y;x},l,nm)
[[1]]
rep.1.10. letters1:10
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 f
7 7 g
8 8 h
9 9 i
10 10 j
[[2]]
rep.11.20. letters11:20
1 11 k
2 12 l
3 13 m
4 14 n
5 15 o
6 16 p
7 17 q
8 18 r
9 19 s
10 20 t