在 R 中每第 n 列更改列名称
Change column name every nth column in R
所以我创建了一个 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
提前感谢您的帮助,感谢您的每一个回答:)
可以根据位置修改某些列名,但是需要把[]
括号放在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
您也可以试试这个代码。值 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
所以我创建了一个 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
提前感谢您的帮助,感谢您的每一个回答:)
可以根据位置修改某些列名,但是需要把[]
括号放在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
您也可以试试这个代码。值 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