嘿伙计们我想在R中循环;任何人都可以帮助我
例如,我有点数的总和,我不想在点数总和的0-10%中出现等等;在R中怎么做
例如我有数据
empid sumofpoints
1 10
2 30
我希望数据为
percentageofsumpoints countofempid
0-10 4
11-20 5
21-30 6
等...... 如何在R中做,我必须为它安装任何包
答案 0 :(得分:2)
无需安装包。请参阅http://nunn.rc.fas.harvard.edu/groups/pica/wiki/1f131/
简单的循环
for (i in 1:10){
print(i)
}
在您的示例中,假设您的数据存储在名为df
res <- NULL
groups <- c(0,10,20,30,40,...)
for (i in 2:length(groups)){
res <- rbind(res,c(paste(groups[i],groups[i-1],sep="-"),nrow(df[df$sumofpoints <= groups[i] & df$sumofpoints > groups[i-1],])))
}
如果您想避免apply
语句,也可以使用for
函数。这个例子我直接来自帮助文件
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
dimnames(x)[[1]] <- letters[1:8]
apply(x, 2, mean, trim = .2)
编辑继续此how to avoid loops
答案 1 :(得分:0)
对于大型数据集,请参阅包foreach
。这允许使用%do%
进行顺序循环设置或使用%dopar%
进行并行设置(对于大型数据集更快)。
http://cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf
对于并行计算,请注意您需要后端,例如“doParallel”或“DoSNOW”。还有“doMC”,它只适用于支持该操作系统的操作系统 fork系统调用(这意味着不支持Windows)。