在R中每隔第n列更改一次列名

jm81lzqq  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(131)

所以我创建了一个data.frame,它有n列,如下所示:

df <- as.data.frame(matrix(nrow = 3, ncol = 15))

它看起来像这样:

V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
2 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
3 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA

我想更改每第N个列名,所以它看起来像这样:

A  V2 V3 B  V5 V6 C  V8 V9  D  V11 V12  E  V14 V15
1 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
2 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
3 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA

我做了这个序列,它给了我想要的Colnames:

colnames(df[,seq(1,ncol(df),3)])

输出:

[1] "V1"  "V4"  "V7"  "V10" "V13"

但当我尝试更改名称时没有发生任何事情:

colnames(df[,seq(1,ncol(df),3)]) <- c("A","B","C","D","E")

我也试过这个,但它只改变了第一列,并给出警告消息:

names <- colnames(df[,seq(1,ncol(df),3)])
colnames(df)[colnames(df) == names] <- c("A","B","C","D","E")

警告信息:

Warning message:
In colnames(df)[colnames(df) == names] <- c("A", "B", "C", "D",  :
  number of items to replace is not a multiple of replacement length

谢谢你的帮助,我很感激你的每一个回答:)

lxkprmvk

lxkprmvk1#

您可以根据位置修改某些列名,但需要将[]方括号放在colnames函数外部:

df <- as.data.frame(matrix(nrow = 3, ncol = 15))
colnames(df)[seq(1,ncol(df),3)] <- c("A","B","C","D","E")
df
#>    A V2 V3  B V5 V6  C V8 V9  D V11 V12  E V14 V15
#> 1 NA NA NA NA NA NA NA NA NA NA  NA  NA NA  NA  NA
#> 2 NA NA NA NA NA NA NA NA NA NA  NA  NA NA  NA  NA
#> 3 NA NA NA NA NA NA NA NA NA NA  NA  NA NA  NA  NA
enxuqcxy

enxuqcxy2#

你也可以试试下面的代码。k值允许修改名字中的空格:

#Data
df <- as.data.frame(matrix(nrow = 3, ncol = 15))
#Seq for names
k <- 3
v1 <- seq(1,length(names(df)),by=k)
vchar <- LETTERS[1:length(v1)]
#Replace
names(df)[v1] <- vchar

输出:

A V2 V3  B V5 V6  C V8 V9  D V11 V12  E V14 V15
1 NA NA NA NA NA NA NA NA NA NA  NA  NA NA  NA  NA
2 NA NA NA NA NA NA NA NA NA NA  NA  NA NA  NA  NA
3 NA NA NA NA NA NA NA NA NA NA  NA  NA NA  NA  NA

相关问题