我需要更改具有相同名称结构的多个数据帧的列名称。我想使用一个循环,但我一直有同样的问题。所以我愿意使用lapply或其他任何东西:
这就是我想要的:
SwingWorker
这是我的尝试:
colnames(gom2)<-c(paste("d2", colnames(gom2),sep="_"))
colnames(gom3)<-c(paste("d3", colnames(gom3),sep="_"))
colnames(gom4)<-c(paste("d4", colnames(gom4),sep="_"))
colnames(gom5)<-c(paste("d5", colnames(gom5),sep="_"))
colnames(gom6)<-c(paste("d6", colnames(gom6),sep="_"))
我知道这段代码有误,但我不能将{i}作为文本来处理它。只要直观,我就可以使用任何解决方案。我已经看过其他解决方案,并尝试过,但没有取得多大成功,也无法理解他们在做什么。 谢谢!
答案 0 :(得分:0)
这可能会满足您的需求。
geneid fdr_new fdr_old
gene1 4.66E-05 1.45E-05
gene2 0.059650791 0.043799129
gene3 0.04405402 0.061581326
gene4 0.032286852 0.088522898
gene5 0.025672937 0.004911527
gene6 0.001094006 0.000229285
gene7 0.098444488 0.002132802
gene8 0.006079767 0.000230392
gene9 0.000117813 0.000894136
gene10 0.004925041 0.002640812
gene11 0.00036314 5.46E-05
gene12 0.026337682 0.018557193
gene13 0.001503366 0.004951799
gene14 3.05E-05 4.37E-06
gene15 0.001006888 0.009248765
gene16 8.11E-05 0.006124903
gene17 0.062408836 0.026734781
gene18 0.09637641 0.097559967
gene19 0.00405273 0.075971307
gene20 0.078261356 0.080722817
gene21 0.033206859 0.019133673
gene22 0.029851363 0.037940196
答案 1 :(得分:0)
我会尝试这样的事情:
for (i in 2:6){
df<- paste0("gom", i)
colnames(eval(parse(text=df)))<- paste("d", i, colnames(eval(parse(text=df))), sep="_")
}
我们使用paste0
为每个i
创建数据框的名称。然后函数eval
和parse
首先解析字符向量,即在这种情况下为df
,然后对其进行求值。
顺便说一下,我认为gom{i}
旨在表示gom2, gom3
等,而d{i}
应该称为d1, d2
等,但它无法正常工作