R错误:as.numeric(apply)出错:无法强制将类型'closure'强制转换为'double'类型的向量

时间:2016-05-10 10:10:50

标签: r

我搜索了类似的问题,找不到适合我案例的答案。他们帮助我理解了这个问题 - 但我仍然不知道如何解决它。 我正在做一个有序的逻辑回归,我想要的是这样一个表:

 ## as.numeric(apply)    N=400
 ## 
 ## +-------+-----------+---+----+-------+-----+
 ## |       |           |N  |Y>=0|Y>=1   |Y>=2 |
 ## +-------+-----------+---+----+-------+-----+
 ## |bekt   |1          |337|Inf |-0.3783|-2.44|
 ## |       |2...       | 63|Inf | 0.7655|-1.35|
 ## +-------+-----------+---+----+-------+-----+ 
 ## |vstt   |1          |343|Inf |-0.2048|-2.35|
 ## |       |2...       | 57|Inf |-0.1759|-1.55|
 ## +-------+-----------+---+----+-------+-----+
 ## |verwt  |1          |102|Inf |-0.3973|-2.77|
 ## |       |2          | 99|Inf |-0.2642|-2.30|
 ## |       |3...       |100|Inf |-0.2007|-2.09|
 ## +-------+-----------+---+----+-------+-----+
 ## |Overall|           |400|Inf |-0.2007|-2.20|
 ## +-------+-----------+---+----+-------+-----+

如果我们一次一个地对我们的预测变量进行因变量回归,它会显示我们将得到的(线性)预测值,没有平行斜率假设。 这是我使用的代码(我收到上面的错误消息):

  sf <- function(y) {
c('Y>=0' = qlogis(mean(y >= 0)),
  'Y>=1' = qlogis(mean(y >= 1)),
  'Y>=2' = qlogis(mean(y >= 2)))
   }

s <- with(dataframe, summary(as.numeric(apply) ~ bekt + vstt + verwt + nwoet, fun=sf)) 

bekt等是数据框中的列。

2 个答案:

答案 0 :(得分:1)

编辑: 哦,天哪,我无法相信!我只是想出了问题,这非常简单:&#34;申请&#34;在这种情况下不是命令。它是一个变量,df中的一列被称为&#34;应用&#34;。该死......!

答案 1 :(得分:0)

你的问题可以解释一下你想要完成什么,例如你期望输出的结构和你输入的结果的例子。

话虽如此,根据我可以收集的内容,您希望在每列上应用函数sf,每个比较器每列获得qlogis个结果(0,1,2)

如果出现这种情况,可能就是您要找的东西:

sapply(0:2, function(ref) {qlogis(colMeans(dat >= ref))})

它会给出一个矩阵,其中每列与参考值(0,1,2)相关,每行与一列相关。

无需编写sf函数。

希望我有一个正确的结束,

:)