具有多个参数(R)的函数的条件应用

具有多个参数(R)的函数的条件应用,r,conditional-statements,R,Conditional Statements,我试图为多个因素的每个组合对数据集应用一个函数。该函数有两个参数。我尝试了基于和使用plyr软件包的解决方案,但没有成功 举个例子很有用。这里,对于两种情况,x表示“事件”,y表示“响应” dat <- data.frame(x=c(0,0,1,1,0,0,1,1), y=c(2,1,1,2,1,2,1,0), g1=c("a","a","a","a","b","b","b","b"), g2=c("c",

我试图为多个因素的每个组合对数据集应用一个函数。该函数有两个参数。我尝试了基于和使用plyr软件包的解决方案,但没有成功

举个例子很有用。这里,对于两种情况,x表示“事件”,y表示“响应”

dat <- data.frame(x=c(0,0,1,1,0,0,1,1),
              y=c(2,1,1,2,1,2,1,0),
              g1=c("a","a","a","a","b","b","b","b"),
              g2=c("c","d","c","d","c","d","c","d"))

attach(dat)
但是,对
的调用会产生:

Error in propFun(events = x) : 
argument "response" is missing, with no default
我使用
sapply
ddply
也同样不成功


我确信我得到的错误有一个简单的语法修正;不过,我也会对解决整个问题的更好办法感兴趣。谢谢

我想这就是你想要的,用
ddply
总结

ddply(dat,.(g1,g2),summarise,ev = length(y[x==1 & y==2])/sum(x))

  g1 g2 ev
1  a  c  0
2  a  d  1
3  b  c  0
4  b  d  0

我想这就是你想要的,使用
ddply
总结

ddply(dat,.(g1,g2),summarise,ev = length(y[x==1 & y==2])/sum(x))

  g1 g2 ev
1  a  c  0
2  a  d  1
3  b  c  0
4  b  d  0

坚持Joran的回答,但我认为您的错误消息是由于放错了“)”。试试(dat,list(g1,g2),propFun(events=x,response=y))
看看你的代码是否运行。谢谢Carl,但我相信我也尝试过这个迭代。这会在FUN(X[[1L]],…)中产生错误
错误:找不到函数“FUN”
。根据?by,FUN的进一步参数应在对的调用中添加逗号后提供;我还没能让它工作。坚持Joran的答案,但我认为你的错误信息是由于放错了“)”。试试(dat,list(g1,g2),propFun(events=x,response=y))看看你的代码是否运行。谢谢Carl,但我相信我也尝试过这个迭代。这会在FUN(X[[1L]],…)中产生错误
错误:找不到函数“FUN”
。根据?by,FUN的进一步参数应在对的调用中添加逗号后提供;我一直没能让它工作。
ddply(dat,.(g1,g2),summarise,ev = length(y[x==1 & y==2])/sum(x))

  g1 g2 ev
1  a  c  0
2  a  d  1
3  b  c  0
4  b  d  0