具有多个参数(R)的函数的条件应用
我试图为多个因素的每个组合对数据集应用一个函数。该函数有两个参数。我尝试了基于和使用plyr软件包的解决方案,但没有成功 举个例子很有用。这里,对于两种情况,x表示“事件”,y表示“响应”具有多个参数(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",
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