【问题标题】:R coerce data frame to numericR将数据帧强制为数字
【发布时间】:2012-07-10 19:02:15
【问题描述】:

RandomForest 已返回对象 prd,它是带索引的数字类:

> prd
      298       252       373       117         0        16       442        74 
4397.9232 1826.1264 1787.1963 1388.8097 1075.7217  873.9856 1602.7068 1775.1237 
class(prd)
[1] "numeric"

我想做一个相关性测试,这意味着获取相同格式的 obs。目前,obs 是一个单列数据框:

> obs
       e2004MeanY
298       4261
252       1821
373       1710
117       1138

如何将 obs 转换为正确的格式?我不知道如何将索引与数字中的值联系起来。

【问题讨论】:

  • ? obs 看起来有两列。数字的第一列是行名吗?
  • > dim(obs) [1] 122 1 它只有一列,左边的“列”是索引
  • str(prd) 的作用是什么?
  • > str(prd) Named num [1:122] 4398 1826 1787 1389 1076 ... - attr(*, "names")= chr [1:122] "298" "252" "373" "117" ...
  • obs[, 1] 有什么问题?

标签: r dataframe numeric


【解决方案1】:

您可以使用 [ 对数据框进行子集化,默认为 drop = TRUE 将删除空维度,从而从 1 列数据框变为数字向量。例如

R> obs <- data.frame(e2004MeanY = c(4261,1821,1712,1138))
R> rownames(obs) <- c(268,252,373,117)
R> 
R> (obs1 <- obs[, 1]) ## equiv of: obs[, 1, drop = TRUE]
[1] 4261 1821 1712 1138
R> class(obs1)
[1] "numeric"

如果丢失行名是个问题,则将它们添加回向量的names

R> names(obs1) <- rownames(obs)
R> obs1
 268  252  373  117 
4261 1821 1712 1138

当然,如果你在调用cor()时使用临时对象,这不是问题,例如:

cor(prd, obs[, 1])

【讨论】:

  • 谢谢,这就是我要找的。​​span>
猜你喜欢
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多