【问题标题】:cbind factor vector with level namescbind 具有级别名称的因子向量
【发布时间】:2015-06-19 17:01:25
【问题描述】:

我创建了三个向量并尝试使用 cbind 将它们组合到一个表中。第三个向量是具有三个水平的因子。我得到这个输出:

 v1 <- c(1,2,3)
 v2 <- c(4,5,6)
 v3 <- factor(c('lorem','ipsum','dolor'))
 cbind(v1,v2,v3)
     v1 v2 v3
[1,]  1  4  3
[2,]  2  5  2
[3,]  3  6  1

首选输出是:

 cbind(v1,v2,v3)
     v1 v2 v3
[1,]  1  4  lorem
[2,]  2  5  ipsum
[3,]  3  6  dolor

是否可以像上面那样获取关卡名称而不是ID来显示?

【问题讨论】:

  • 我认为您需要data.frame 而不是cbind,因为cbind 给出了一个矩阵,而matrix 只能容纳一个类。该因子被强制转换为数值
  • 如果您需要使用cbind,请尝试cbind(v1, v2, v3=levels(v3)[v3])

标签: r


【解决方案1】:

不确定为什么需要这样做。最好使用可以容纳多个类的data.frame。通过使用cbind,我们得到matrix,而matrix 只能容纳一个类。因此,即使只有一个非数字值,列也会全部转换为“字符”类。

 cbind(v1, v2, v3=levels(v3)[v3])
 #     v1  v2  v3     
 #[1,] "1" "4" "lorem"
 #[2,] "2" "5" "ipsum"
 #[3,] "3" "6" "dolor"

或者

 cbind(v1, v2, v3=as.character(v3))

【讨论】:

  • 谢谢。没有考虑 data.frame;虽然这可能很明显。
猜你喜欢
  • 2015-06-25
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多