【问题标题】:Change column name every nth column in RR中每第n列更改列名
【发布时间】:2020-11-23 14:44:12
【问题描述】:

所以我创建了一个 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(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)[seq(1,ncol(df),3)] &lt;- c("A","B","C","D","E")
  • 现在我重置了 RStudio。可能是一些错误:/

标签: r dataframe columnname


【解决方案1】:

您可以根据位置修改某些列名,但需要将[]括号放在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

【讨论】:

  • 嗯...该说什么...我也试过了,但是没有用...然后我重置了我的 Rstudio 并且它可以工作... :D :D 非常感谢. 10 分钟后我会接受你的回答。
  • 你也可以在这里使用%%colnames(df)[seq(colnames(df)) %%3 == 1] &lt;- c("A","B","C","D","E")
【解决方案2】:

你也可以试试这个代码。值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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2020-04-16
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多