如何在R中使用相同长度的向量更改列表中data.frames的列名?

时间:2017-08-25 16:39:36

标签: r list dataframe lapply

我有一个长度为“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的列表。

谢谢。

2 个答案:

答案 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