如何在R中循环

时间:2013-08-16 12:41:49

标签: r loops

嘿伙计们我想在R中循环;任何人都可以帮助我

例如,我有点数的总和,我不想在点数总和的0-10%中出现等等;在R中怎么做

例如我有数据

empid               sumofpoints
  1                       10
  2                       30 

我希望数据为

percentageofsumpoints       countofempid
   0-10                        4
  11-20                        5
  21-30                        6

等...... 如何在R中做,我必须为它安装任何包

2 个答案:

答案 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)。