小编tom*_*m91的帖子

如何避免复杂的for循环?

我目前正在使用一系列大型数据集,并且我正在努力改进我在R中编写脚本的方式.我倾向于主要使用for循环,我知道这些循环很麻烦且很慢,尤其是非常大的数据集.

我听过很多人推荐apply()系列来避免复杂的for循环,但是我很难用它们一次性应用多个函数.

这是一些简单的示例数据:

A <- data.frame('Area' = c(4, 6, 5),
                'flow' = c(1, 1, 1))
B <- data.frame('Area' = c(6, 8, 4),
                'flow' = c(1, 2, 1))
files <- list(A, B)
frames <- list('A', 'B')
Run Code Online (Sandbox Code Playgroud)

我想要做的是通过'flow'变量对数据进行排序,然后为每个数据点所代表的总'flow'和'area'部分添加列,最后再添加两列每个变量的累积百分比.

目前我用这个循环:

sort_files <- list()
n <- 1
for(i in files){
  name <- frames[n]
  nom <- paste(name,'_sorted', sep = '')
  data <- i[order(-i$flow),]
  area <- sum(i$Area)
  total <- sum(i$flow)
  data$area_portion <- (data$Area/area)*100
  data$flow_portion <- (data$flow/total)*100
  data$cum_area <- cumsum(data$area_portion)
  data$cum_flow <- cumsum(data$flow_portion)
  assign(nom, data)
  df <- …
Run Code Online (Sandbox Code Playgroud)

for-loop r

13
推荐指数
2
解决办法
2121
查看次数

标签 统计

for-loop ×1

r ×1