R将数据帧强制转换为数字

时间:2012-07-10 19:02:16

标签: r dataframe numeric

RandomForest返回了对象prd,它是具有索引的类numeric:

> 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转换为正确的格式?我无法弄清楚如何将索引与数值中的值联系起来。

1 个答案:

答案 0 :(得分:2)

您可以使用[对数据框进行子集化,因为默认值为drop = TRUE将删除空维度,从而从1列数据帧转移到数字向量。 E.g。

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])