FUN错误(newX [,i],...):找不到函数"sim"

Ami*_*wal 1 r

我试图用书来学习R. 我试图做一个例子,对于矩阵的每一行,向量的对应元素将是1或0,这取决于该行中的大多数前d个元素是1还是0.使用的代码是: -

copymaj <- function(rw,d) {
   maj <- sum(rw[1:d]) / d
   return(if(maj > 0.5) 1 else 0)
}

 x
    [,1] [,2] [,3] [,4] [,5]
[1,]  1    0    1    1    0
[2,]  1    1    1    1    0
[3,]  1    0    0    1    1
[4,]  0    1    1    1    0

apply(x,1,copymaj,3)
Run Code Online (Sandbox Code Playgroud)

它显示上述错误.如果我这样做apply(x,1,copymaj(3)),仍会显示错误.

R 2.13安装请帮忙!

Jil*_*ina 5

正如@BenBarnes所指出的,你可能拼错了sum,我想你写的sim不是sum.

通过执行以下操作,我能够重现您的错误:

copymaj0 <- function(rw,d) {
  maj <- sim(rw[1:d]) / d    # here you have sim, this causes the error 
  return(if(maj > 0.5) 1 else 0)
}

copymaj1 <- function(rw,d) {
  maj <- sum(rw[1:d]) / d    # here you have sum which works well for me 
  return(if(maj > 0.5) 1 else 0)
}

x <- matrix(c(1,0,1,1,0,
         1,1,1,1,0,
         1,0,0,1,1,
         0,1,1,1,0), ncol=5, byrow=TRUE)

apply(x,1,copymaj0,3) # prints error
Error in FUN(newX[, i], ...) : could not find function "sim"

apply(x,1,copymaj1,3) # works well
[1] 1 1 0 1
Run Code Online (Sandbox Code Playgroud)

我真的觉得你拼错了sum.

apply(x,1,copymaj1(3))如果你读过?apply你会看到apply(X, MARGIN, FUN, ...),那么将无法工作,apply(x,1,copymaj1(3))因为...将错过了替换FUN(d=3在你的情况下)的参数会 产生错误 .为了可选参数传递给你的乐趣,你必须使用...在apply(x,1,copymaj1,3),但没有使用apply(x,1,copymaj1(3)).