我写了这个函数
tippett <- function(p1, p2) {
t <- 1 - (1 - min(p1, p2))^2
return(list(p.value=t))
}我想把它应用到一个水平生成的数字矩阵中。例如,在这个矩阵中:z <- matrix(c(rbeta(5, 1, 5), rbeta(5, 1, 10)), ncol=2)。
不幸的是,apply似乎不起作用,并且以这种方式使用它,s<-apply(z,1,tippett)。
生成此错误
Error in FUN(newX[, i], ...) : argument "p2" is missing, with no default你能告诉我我怎样才能避开它吗?我希望将这个过程推广到数千行,我无法想象手动地这样做。
谢谢。
发布于 2015-04-09 15:06:50
我想你可以改变你的功能..。
tippett<-function(p){
t<-1-(1-min(p))^2
return(list(p.value=t))
}那么您的函数调用就可以工作了。(我还没有测试过这个.)
s<-apply(z,1,tippett)或者,如果您不能更改此函数,您可以尝试类似于.
s <- sapply(seq_along(nrow(z)), function(i) tippett(z[i,1], z[i,2]))我认为这一切都应该有效。对不起,当前正在运行一些代码,无法验证/测试它。
发布于 2015-04-09 15:20:16
在一行中尝试这个:
tippet2 = function(z) as.list(1-(1-do.call(pmin, as.data.frame(z)))^ncol(z))
tippet2(z)https://stackoverflow.com/questions/29542130
复制相似问题