首页 文章

R函数错误,“没有适用于'predict'类的方法应用于类的对象”NULL“

提问于
浏览
0

我试图使用一个函数来生成一系列KS测试的p值 . 在我的例子中,我希望从我的aaa数据集中选择不同的第一个M [i]行,并在几个步骤过程之后生成预测glm回归值dd,最后比较每两个数据集以获得KS测试的p值 . 但我的代码效果不佳 . 我使用模拟数据在下面附加了我的代码:

set.seed(1)
aaa <- matrix(runif(8000*950), 8000, 950)
ph = sample(rep(0:1,l=950))
kst <- function(M){
  N = length(M)
  aa = list()
  bb = list()
  cc = list()
  dd = list()
  ee = list()
  p = 0
  for (i in 2:N){
    aa[[i]] = aaa[1:M[i],] ## class(aaa) is matrix 
    bb[[i]] = rbind(ph, aa[[i]])
    cc[[i]] = as.data.frame(t(bb[[i]]))
    dd[[i]] = glm(data = cc[[i]], formula = ph~., family = binomial)
    ee[[i]] = ks.test(predict(dd[[i-1]]), predict(dd[[i]]))
    p[i] = ee[[i]]$p.value
  }
  return(p)
}
kst(M = seq(50,950,by=50))

但R说:

> kst(M = seq(50,950,by=50))
Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "NULL"

我认为我的ks.test循环也有错误,但我不知道如何解决它 . 有人可以帮我这个吗?提前致谢 .

1 回答

  • 1

    问题可能在 for (i in 1:N-1)

    R将 1:N-1 解释为序列1到N,然后从整个向量中减去1 . 试试 1:5-1 看看我的意思 .

    试试 for (i in 1:(N-1))

    也在这一行

    ee[[i]] = ks.test(predict(dd[[i]]), predict(dd[[i+1]])) ## this line may also have problem.
    

    dd[[i+1]] 尚未定义,因为您的循环仅将 dd 填充为 i .

    不确定这是你想要做的但是可能:

    if(i>1L)ee[[i]] = ks.test(predict(dd[[i-1]]), predict(dd[[i]]))
    

    这样,在填写 dd 的第一个条目之后,您开始测试当前的 dd 与之前的相比 .

相关问题