更改列表元素中的列名称

时间:2012-10-29 17:07:38

标签: r

我有一个包含data.frames的大型列表(相同的列数,不同的行数)。 我成功地使用apply - 而不是我学会避免的for循环 - 使用

创建每个列表元素中特定列的平均值
t2<-lapply(t1, function(x) cbind(x,rowMeans(x[,c("ColumnX","ColumnY","ColumnZ")])))

我现在遇到的问题是新列名称。它是“rowMeans(x [,c(”ColumnX“,”ColumnY“,”ColumnZ“)])”。

如何为所有列表元素更改此设置?我糟糕的“lapply”知识还不足以完成这项任务。

2 个答案:

答案 0 :(得分:4)

有两种方法可以做到这一点,它实际上与cbind函数而不是lapply函数有关:

cbind(x,DesiredName = rowMeans(x[,...]))

或者在你结束之后:

> names(x)
[1] "Column X" "Column Y" "Column Z" "rowMeans(x[,...])"
> names(x)[4]
"rowMeans(x[,...])"
> names(x)[4] <- "DesiredName" ###Assign a name to the fourth column
> names(x)
[1] "Column X" "Column Y" "Column Z" "DesiredName"

这显然是漫长的道路,但如果您忘记在applycbind流程中输入内容,则会很有用。

答案 1 :(得分:1)

只需添加一个colname,例如RowMeans

t2 <-lapply(t1, function(x) cbind(x,RowMeans=rowMeans(x[,c("ColumnX","ColumnY","ColumnZ")])))

实际上,您可以使用此备选方案来实现目标:

lapply(t1, function(x) transform(x,RowMeans=rowMeans(x[,c("ColumnX","ColumnY","ColumnZ")])))

此处RowMeans是包含每行均值的新变量的名称。