【问题标题】:Extract matrix column with it's name [duplicate]提取带有名称的矩阵列[重复]
【发布时间】:2017-09-20 06:09:34
【问题描述】:

假设你有一个矩阵定义为

m1 = matrix(
  rbind(c(12,8,9),c(4100,3600,3200)), 
  byrow=FALSE, 
  nrow=2, 
  ncol=3, 
  dimnames=list(c("Days","Amount"),c("Col1","Col2","Col3"))
  )

产量:

       Col1 Col2 Col3
Days     12    8    9
Amount 4100 3600 3200

并且您需要显示(知道列的位置,这里是 3)列的名称及其值,以便您获得有关参数的信息,例如:

  Days Amount 
     9   3200

但您还需要知道列名,其中包含有关其值的一些真实信息(即酒店名称)。

您可以使用m1[, 3] 实现上述目标,就像在this question 中一样,但是如何将其与列标题一起打印?(此处为“Col3”)

【问题讨论】:

  • 只是m1[,'Col3',drop=FALSE]
  • @Jaap 真的是重复的吗?我想提取列名及其值。链接的问题和答案并没有为此提供解决方案。在发布之前,我已经查看了您的链接问题。
  • 是的,它是重复的。请访问链接的目标。这与我在上面的评论中发布的不同。
  • @Jaap 你是对的。问题真的很难找到,因为它的标题......我在搜索时没有偶然发现,这要么意味着我不知道如何命名它,要么它并不简单。

标签: r matrix


【解决方案1】:

我们可以使用drop = FALSE而不转换为data.frame

m1[,3, drop = FALSE]
#        Col3
#Days      9
#Amount 3200

【讨论】:

  • 更好更快的感谢。
  • 找不到有关此选项的任何文档。可以给个参考链接吗?
  • @KamilG。你可以在?Extract找到它
【解决方案2】:

您可以将m1 强制转换为data.frame 并切片所需的列

as.data.frame(m1)[3]
#OR
as.data.frame(m1)["Col3"]
#       Col3
#Days      9
#Amount 3200

【讨论】:

  • 谢谢,我没想到要使用数据框。出色而快速的答案。
猜你喜欢
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 2012-02-03
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多