R 在cbind数据后重命名列名称
但失败了。当我使用R 在cbind数据后重命名列名称,r,rename,R,Rename,但失败了。当我使用合并$V1时 colnames(merger)[,1] <- "Date" 尝试: colnames(merge)[1]如果只将向量传递给cbind()它将创建一个矩阵,而不是数据帧。读取?data.frame如果您提供cbind一组参数,所有参数都是向量,那么您将得到的不是数据帧,而是矩阵,在本例中是全字符矩阵。它们有不同的特点。如果某些参数仍然是数据帧,则可以获取数据帧,请尝试: a <- 1:10 b <- cbind(a, a, a) colname
合并$V1
时
colnames(merger)[,1] <- "Date"
尝试:
colnames(merge)[1]如果只将向量传递给cbind()
它将创建一个矩阵,而不是数据帧。读取?data.frame
如果您提供cbind
一组参数,所有参数都是向量,那么您将得到的不是数据帧,而是矩阵,在本例中是全字符矩阵。它们有不同的特点。如果某些参数仍然是数据帧,则可以获取数据帧,请尝试:
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")
合并您在问题中给出了以下示例:
merger <- cbind(Date =as.character(Date),
weather1[ , c("High", "Low", "Avg..High", "Avg.Low")] ,
ScnMov =sale$Scanned.Movement[a] )
colnames(merge)[,1]您也可以在cbind
调用中直接命名列,例如
colnames(merger)[1]<-"Date"
输出:
cbind(date=c(0,1), high=c(2,3))
生成data.frame
并能够在一行中执行此操作的一种方法是,在使用setNames
设置列名属性时,将传递到cbind
的所有矩阵/数据帧强制为data.frame:
date high
[1,] 0 2
[2,] 1 3
产生:
a = matrix(rnorm(10), ncol = 2)
b = matrix(runif(10), ncol = 2)
cbind(setNames(data.frame(a), c('n1', 'n2')),
setNames(data.frame(b), c('u1', 'u2')))
不幸的是,对于在列名之后返回矩阵的数据帧,没有类似于setColNames
的setColNames函数,但是,没有什么可以阻止您调整setNames
的代码以生成一个:
n1 n2 u1 u2
1 -0.2731750 0.5030773 0.01538194 0.3775269
2 0.5177542 0.6550924 0.04871646 0.4683186
3 -1.1419802 1.0896945 0.57212043 0.9317578
4 0.6965895 1.6973815 0.36124709 0.2882133
5 0.9062591 1.0625280 0.28034347 0.7517128
setColNames在添加之前,只需在引号中添加要使用的名称即可
载体
setColNames <- function (object = nm, nm) {
colnames(object) <- nm
object
}
a_matrix@jimsigner我试过了,然后说:“dimnames”[2]的长度不等于数组的长度你能提供一个可复制的小例子吗?我有同样的想法,但不知怎的,在我的例子中只使用了第一个列名,随后的列名被忽略了……试试as.data.frame(cbind(date=c(0,1),high=c(2,3))
。
date high
[1,] 0 2
[2,] 1 3
a = matrix(rnorm(10), ncol = 2)
b = matrix(runif(10), ncol = 2)
cbind(setNames(data.frame(a), c('n1', 'n2')),
setNames(data.frame(b), c('u1', 'u2')))
n1 n2 u1 u2
1 -0.2731750 0.5030773 0.01538194 0.3775269
2 0.5177542 0.6550924 0.04871646 0.4683186
3 -1.1419802 1.0896945 0.57212043 0.9317578
4 0.6965895 1.6973815 0.36124709 0.2882133
5 0.9062591 1.0625280 0.28034347 0.7517128
setColNames <- function (object = nm, nm) {
colnames(object) <- nm
object
}
a_matrix <- cbind(b_matrix,'Name-Change'= c_vector)