不废话:
<br />
#这是数据,大家可以直接COPY进R中。。。<br />
dat <- data.frame(geneA=c(387.7,401.2,595.8,508.0,512.5,552.0),geneB=c(283.8,255.5,370.1,190.1,174.5,186.8),geneC=c(83.4,96.2,104.0,65.5,57.3,57.8),Stress=c("CK","CK","CK","Cold","Cold","Cold"))<br />
dat<br />
geneA geneB geneC Stress<br />
1 387.7 283.8 83.4 CK<br />
2 401.2 255.5 96.2 CK<br />
3 595.8 370.1 104.0 CK<br />
4 508.0 190.1 65.5 Cold<br />
5 512.5 174.5 57.3 Cold<br />
6 552.0 186.8 57.8 Cold<br />
library(plyr)<br />
ddply(dat,"Stress",summarise,avg_geneA=mean(geneA),avg_geneB=mean(geneB),avg_geneC=mean(geneC))<br />
Stress avg_geneA avg_geneB avg_geneC<br />
1 CK 461.5667 303.1333 94.53333<br />
2 Cold 524.1667 183.8000 60.20000<br />
# my opinion: 错的,给大家我的想法。。。<br />
ddply(dat,"Stress",summarise,avg_geneA=mean(geneA),<br />
p_geneA=function(x) {<br />
value <-t.test(x,subset(dat,select=geneA,Stress=="CK")$geneA,alternative="two.sided")$p.value;<br />
return(value)}),<br />
avg_geneB=mean(geneB),<br />
avg_geneC=mean(geneC))<br />
#我只算了geneA的pvalue<br />
我希望数据最后的输出是:
<br />
Stress avg_geneA avg_geneB avg_geneC p_geneA p_geneB p_geneC<br />
1 CK 461.5667 303.1333 94.53333 1.0 1.0 1.0<br />
2 Cold 524.1667 183.8000 60.20000 0.2 0.4 0.8<br />
希望大家帮忙想想~~~
上面我的代码更改了一下,出现了Error in output[[var]][rng] <- df[[var]] :
incompatible types (from closure to logical) in subassignment type fix的错误,这是咋一回事呢。。。
我代码错误一是数值类型不对,二是每次算p.value都要重新修改每列对应的CK值,就是函数中select都要修改成对应的geneA,geneB,geneC。。。好麻烦。。。
有谁想到更好地解决方法么。。。关键是那函数咋写。。。类型怎么会出现错误。。。
[s:18]
</p>