【问题标题】:How to retain column headings when using cbind() with matrices in R在 R 中使用带有矩阵的 cbind() 时如何保留列标题
【发布时间】:2015-06-23 13:55:15
【问题描述】:

假设一个正在尝试将两个矩阵粘贴在一起,这两个矩阵都已使用 list() 和 colnames() 给定列标签。在 R 中使用 cbind() 对数据按预期工作,但是在 cbind() 操作之后列标签似乎丢失了(列标签变为 V1、V2 等......)。这将是函数的一部分,每个矩阵都是函数的输入,因此被附加的一个或两个矩阵通常包含不同数量的列(但总是相同的行数)。

有没有办法在使用 cbind() 绑定两个矩阵时保留列名,或者是否有另一种方法可以将一个矩阵附加到另一个矩阵以保留列标签?

提前致谢!

【问题讨论】:

  • 这似乎有效:m1<-matrix(1:8, nrow=2, dimnames=list(NULL, letters[1:4])); m2<-matrix(1:6, nrow=2, dimnames=list(NULL, letters[5:7])); cbind(m1,m2)。你能提供一个 reproducible example 一个它不起作用的情况吗?
  • 谢谢,这是正确的方向。使用代码: > colnm1 colnm2 colnm3 矢量列表
  • 使用下面的代码,我得到的是内容,而不是名字: > m1 m2 m3 finalmtx finalmtx c(1, 0, 0) c(1, 1, 0) c(1, 1, 1) [1,] 1 1 1 [2,] 0 1 1 [3,] 0 0 1
  • vectorlist 是什么?可能应该是vectorlist[[1]]。但是您应该按照已要求的 可重现的示例 编辑您的问题(而不是在 cmets 中发布)

标签: r matrix cbind


【解决方案1】:

“使用 list() 和 colnames() 给定列标签”的意思并不完全清楚

使用以下代码保留先前分配给矩阵的列名:

B = matrix(  c(2, 4, 3, 1, 5, 7),    nrow=3,  ncol=2) 
C = matrix(  c(12, 34, 33, 11, 35, 27),    nrow=3,  ncol=2) 

colnames(B)<-list("red","blue")
colnames(C)<-list("green","black")

D<-cbind(B,C)
colnames(D)

【讨论】:

  • 如果在 colnames (C) 中将绿色更改为红色,则 cbind 会为连接列生成一个新名称。所以你没有红色和红色两个列名。 cbind 生成 red 和 red.1。这正是丹尼斯在这个问题中提出的问题。他希望拥有完全相同的名称,而不需要 cbind 进行任何更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 2018-11-22
  • 2020-01-25
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多