更改list-R中数据帧的列名时出错

时间:2016-03-27 12:52:19

标签: r

我有这样一个列表(list1),每个元素都是一个由一列组成的数据框。

所有columsn名称相同" x"。我想将列名更改为" x1"," x2",....," xn"。

我使用下面的代码:

lapply(list1, function(x) setNames(x, "x",paste("x",1:seq_along(list1))))  

但是,此代码不起作用。为什么这段代码不起作用?我会很高兴得到任何帮助。非常感谢。

@ David Arenburg,我编写了如下代码(10是list1中的元素编号):

lapply(list1, function(z) setNames(z,paste0("x",1:10)))

此代码不会给出任何错误,但它也不会更改列名。列名仍为#34; x"。

我编辑了如下,但它仍然无法正常工作。

for(i in 1:10)
{
  list2[[i]]<-setNames(data.frame(list1[[i]])[,1], paste0("x",1:10)[i])
}

我暂时删除了seq_along。在获得理想的结果后,我会继续努力。

list1的每个元素都是一个数据框,每个数据框只有一列。

1 个答案:

答案 0 :(得分:1)

如果要更改列表的多个数据框中每列的名称,则应执行以下操作:

# Artificial list with each data frame containing columns with values from 1 to 3

list1 = list(data.frame(x = 1:3), data.frame(x = 1:3), data.frame(x = 1:3),
         data.frame(x = 1:3), data.frame(x = 1:3), data.frame(x = 1:3),
         data.frame(x = 1:3), data.frame(x = 1:3), data.frame(x = 1:3),
         data.frame(x = 1:3))

# Assigning column names of individual data frames

for(i in 1:length(list1)){
  colnames(list1[[i]]) = paste("x",i, sep = "")
}

我创建了一个包含多个数据框的列表,每个数据框都包含相同的列x。由于您要更改数据框中列的名称,因此在setNames()中为每个单独的数据框分配多个值将无济于事。因此,您必须将x与单个值(从列表的1到长度)粘贴到各个数据框的列名称。