首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个参数的函数应用于n乘两个矩阵

将两个参数的函数应用于n乘两个矩阵
EN

Stack Overflow用户
提问于 2015-04-09 15:02:21
回答 2查看 189关注 0票数 4

我写了这个函数

代码语言:javascript
复制
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)

生成此错误

代码语言:javascript
复制
Error in FUN(newX[, i], ...) : argument "p2" is missing, with no default

你能告诉我我怎样才能避开它吗?我希望将这个过程推广到数千行,我无法想象手动地这样做。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-09 15:06:50

我想你可以改变你的功能..。

代码语言:javascript
复制
tippett<-function(p){
t<-1-(1-min(p))^2
return(list(p.value=t))
}

那么您的函数调用就可以工作了。(我还没有测试过这个.)

代码语言:javascript
复制
s<-apply(z,1,tippett)

或者,如果您不能更改此函数,您可以尝试类似于.

代码语言:javascript
复制
s <- sapply(seq_along(nrow(z)), function(i) tippett(z[i,1], z[i,2]))

我认为这一切都应该有效。对不起,当前正在运行一些代码,无法验证/测试它。

票数 3
EN

Stack Overflow用户

发布于 2015-04-09 15:20:16

在一行中尝试这个:

代码语言:javascript
复制
tippet2 = function(z) as.list(1-(1-do.call(pmin, as.data.frame(z)))^ncol(z))

tippet2(z)
  • 这是矢量化的。
  • 这适用于您的矩阵或具有更多列的矩阵。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29542130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档