R FUN(newX[,i],…)中出错:找不到函数“sim”

R FUN(newX[,i],…)中出错:找不到函数“sim”,r,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

我试着用一本书来学习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)
它显示了上述错误。同样,如果我使用applyx,1,copymaj3,仍然会显示错误

已安装R 2.13
请帮忙

正如@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
我真的认为你把sum拼错了

applyx,1,copymaj13不起作用,因为如果你阅读?apply你会看到的 applyX,MARGIN,FUN,…,然后applyX,1,copymaj13将产生一个错误,因为
... 在丢失的情况下,将参数替换为FUN d=3。为了给你的乐趣传递可选的参数,你必须使用。。。正如在applyx,1,copymaj1,3中所述,但不使用applyx,1,copymaj13。

正如@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
我真的认为你把sum拼错了

applyx,1,copymaj13不起作用,因为如果你阅读?apply你会看到的 applyX,MARGIN,FUN,…,然后applyX,1,copymaj13将产生一个错误,因为
... 在丢失的情况下,将参数替换为FUN d=3。为了给你的乐趣传递可选的参数,你必须使用。。。与applyx,1,copymaj1,3一样,但不使用applyx,1,copymaj13。

applyx,1,copymaj,3命令对我有效。也许sum拼错了?否则我知道arm软件包中有一个功能sim卡。可能是这样。奇怪的是,代码在R studio中运行。命令applyx,1,copymaj,3适合我。也许sum拼错了?否则我知道arm软件包中有一个功能sim卡。可能是这样。奇怪的是,代码在R studio中工作。谢谢。这可能就是问题所在。但是它的总数和它在Rstudio中的工作,而不是在R GUI中。谢谢。这可能就是问题所在。但是它的总和以及它在Rstudio中的工作,而不是在R GUI中。