【问题标题】:how to do looping in R [closed]如何在R中循环[关闭]
【发布时间】:2013-08-18 21:02:27
【问题描述】:

大家好,我想在 R 中循环;谁能帮帮我

例如,我有积分总和,我不希望 empid 在积分总和的 0-10% 内,等等;如何在 R 中做

例如,我有数据

empid               sumofpoints
  1                       10
  2                       30 

我想要数据为

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

等等.... 如何在 R 中做到这一点,我是否必须为它安装任何软件包

【问题讨论】:

  • 你应该添加一些你迄今为止尝试过的代码的例子,这样我们可以帮助你,而不是为你做
  • 我不确定你到目前为止做了什么工作,但谷歌搜索会帮助你。 R 文档真的很不错。

标签: r loops


【解决方案1】:

无需安装包。见http://nunn.rc.fas.harvard.edu/groups/pica/wiki/1f131/

简单的for循环

 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],])))
}

如果您想避免使用for 语句,也可以使用apply 函数。这个例子我直接取自帮助文件

 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

【讨论】:

    【解决方案2】:

    对于大型数据集,请参阅包foreach。这允许使用%do% 进行顺序循环设置或使用%dopar% 进行并行设置(对于大型数据集更快)。

    http://cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf

    对于并行计算,请注意您需要一个后端,例如“doParallel”或“DoSNOW”。还有“doMC”,它只适用于支持 fork 系统调用(这意味着不支持 Windows)。

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 2022-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多