首页 > 解决方案 > 在R中使用For循环重命名具有索引的列

问题描述

我写这篇文章是为了征求一些关于循环代码按索引重命名列的建议。

我有一个数据集,其中比例项列彼此相邻。不幸的是,它们的名字很奇怪。

我想以这种格式重命名每一列:SimRac1、SimRac2、SimRac3....等等。我知道列的位置(列号 30 到 37)。我知道这些比例项目的排序方式可以使它们从左到右按递增的顺序命名和编号。

我目前拥有的代码有效,但效率不高。不同位置的其他音阶也需要以类似方式重命名。这将导致数十个代码行。

请参见下面的代码。

names(Total)[30] <- "SimRac1"
names(Total)[31] <- "SimRac2"
names(Total)[32] <- "SimRac3"
names(Total)[33] <- "SimRac4"
names(Total)[34] <- "SimRac5"
names(Total)[35] <- "SimRac6"
names(Total)[36] <- "SimRac7"
names(Total)[37] <- "SimRac8"

我想循环这段代码,这样我就只有一段代码可以完成这项工作。我在想也许“for循环”会有所帮助。因此,下面的代码

for (i in Total[,30:37]){
names(Total)[i] <- "SimRac(1:8)"
}

不幸的是,这不起作用。这段代码运行没有错误,但它没有做任何事情。

做建议。

标签: rfor-loopz-indexcolumnname

解决方案


在 OP 的代码中,“SimRac(1:8)”是一个常数。要拥有动态名称,请使用paste0. 我们在这里不需要循环。我们可以使用向量化函数来创建名称,然后将名称分配给names(Total)

names(Total)[30:37]<-paste0('SimRac', 1:8)

推荐阅读