在cbind数据之后重命名列名

jan*_*eon 30 r rename

在此输入图像描述

merger <- cbind(as.character(Date),weather1$High,weather1$Low,weather1$Avg..High,weather1$Avg.Low,sale$Scanned.Movement[a])
Run Code Online (Sandbox Code Playgroud)

cbind数据之后,新DF自动列名V1,V2......我想重命名列

colnames(merger)[,1] <- "Date"
Run Code Online (Sandbox Code Playgroud)

但失败了.当我使用时merger$V1,

Error in merger$V1 : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

dak*_*les 59

您还可以直接在cbind呼叫中命名列,例如

cbind(date=c(0,1), high=c(2,3))
Run Code Online (Sandbox Code Playgroud)

输出:

     date high
[1,]    0    2
[2,]    1    3
Run Code Online (Sandbox Code Playgroud)

  • 尝试`as.data.frame(cbind(date = c(0,1),high = c(2,3)))`. (4认同)
  • 我有相同的想法,但是在我的情况下,仅以某种方式使用了第一列名称,随后的列名称被忽略了... (2认同)

joh*_*nes 12

尝试:

colnames(merger)[1] <- "Date"
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子:

a <- 1:10
b <- cbind(a, a, a)
colnames(b)

# change the first one
colnames(b)[1] <- "abc"

# change all colnames
colnames(b) <- c("aa", "bb", "cc")
Run Code Online (Sandbox Code Playgroud)


Mar*_*ing 6

你在问题中给出了以下例子:

colnames(merger)[,1]<-"Date"
Run Code Online (Sandbox Code Playgroud)

问题是逗号:colnames()返回一个向量,而不是一个矩阵,所以解决方案是:

colnames(merger)[1]<-"Date"
Run Code Online (Sandbox Code Playgroud)