lyxmoo 这里写了一段丑陋的代码,万能的论坛有更好的优雅手法给一个。 </p> <p>r200<-runif(20000,0,10)<br /> l200<-c(0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10)<br /> dim(l200)<-c(2,10)</p> <p>apply(l200,2,function(x) { sum(r200[ ( r200>x[1] & r200<x[2] ) ] );} )</p> <p> </p>
xuening 没想出来优雅的做法呢……过来贴个解法二~…… r200 = runif(20000,0,10)<br /> r200=r200[!is.element(r200,1:10)]<br /> a=as.character(cut(Z, breaks = 0:10))<br /> sapply(as.character(cut(1:10,breaks=0:10)),function(x) return(sum(Z[a==x]))) </p>
Robert_Hoo 其实aggregate也可以的。。。。。返回data.frame <br /> aggregate(r200, list(ceiling(r200)), sum)<br /> Group.1 x<br /> 1 1 993.5664<br /> 2 2 3013.5922<br /> 3 3 5223.1142<br /> 4 4 6733.0997<br /> 5 5 8682.7998<br /> 6 6 10951.1534<br /> 7 7 13034.2529<br /> 8 8 15417.6625<br /> 9 9 17024.2725<br /> 10 10 18990.7726<br /> </p>
newbye [s:11]学习了~ by的输出结果在这里不太合适,cut划分区间更灵活,综合2楼和5楼的就是: <br /> aggregate(r200, list(cut(r200,0:10)), sum)<br /> Group.1 x<br /> 1 (0,1] 1006.218<br /> 2 (1,2] 2940.106<br /> 3 (2,3] 5058.943<br /> 4 (3,4] 7059.092<br /> 5 (4,5] 9136.175<br /> 6 (5,6] 10882.886<br /> 7 (6,7] 13152.513<br /> 8 (7,8] 15150.999<br /> 9 (8,9] 16693.734<br /> 10 (9,10] 18629.060<br /> </p>