0
 > scores=cbind(UNCA.score, A.score, B.score, U.m.A, U.m.B)

 > names(scores)=c('UNCA.scores', 'A.scores', 'B.scores','UNCA.minus.A', 'UNCA.minus.B')

 > names(scores)
 [1] "UNCA.scores"  "A.scores"     "B.scores"     "UNCA.minus.A" "UNCA.minus.B"

 > summary(UNCA.scores)
  X6.69230769230769
  Min.   : 4.154   
  1st Qu.: 7.333   
  Median : 8.308   
  Mean   : 8.451   
  3rd Qu.: 9.538   
  Max.   :12.000   

> is.numeric(UNCA.scores)
 [1] FALSE

> is.numeric(scores[,1])
 [1] TRUE

我的问题是,UNCA.scores 和 score[,1] 之间有什么区别?UNCA.scores 是 data.frame 'scores' 中的第一列,但它们不是一回事,因为一个是数字,另一个不是。

如果 UNCA.scores 在这里只是一个标签,我怎样才能使它等同于'scores [,1]?

谢谢!

4

2 回答 2

1

scores是一个矩阵,而不是一个 data.frame。用于data.frame创建 data.frame,而不是cbind.

矩阵中的所有列都属于同一类型,在这种情况下 using 将cbind所有元素强制转换为数字。

于 2010-05-19T02:30:06.100 回答
0

您发布的代码似乎有些有趣。如果在您的代码开始时还没有一个名为 UCNA.scores 的对象,那么尝试将其传递给汇总函数应该会产生错误,因为您不能只按名称引用矩阵列。另一件事是为矩阵分配名称是为元素命名,而不是列。如果您对 data.frame 进行评分并在创建后立即附加它,您的输出就是我所期望的。

即使撇开这些东西,我也无法重现您的问题。如果确实缺少零件,您能否发布一些示例数据和/或显示其他任何情况?

于 2010-05-19T04:10:35.770 回答