我试图用书来学习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安装请帮忙!
正如@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)).
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |