r - 从 R 中的向量中累积选取元素

标签 r function loops dataframe lapply

我正在使用以下方法来累积(即,首先选择前 2 个元素,然后每次添加 1 个元素;请参阅下面的输出)从下面的向量 mods 中选择元素。我想知道在 BASE R 中是否有更快或更简单的方法来执行此操作?

n <- names(mtcars) # BASE R dataset

lapply(seq_along(n)[-1], function(i)n[seq_len(i)]) # any faster or simpler approach here?

[[1]]
[1] "mpg" "cyl"

[[2]]
[1] "mpg"  "cyl"  "disp"

[[3]]
[1] "mpg"  "cyl"  "disp" "hp"  

[[4]]
[1] "mpg"  "cyl"  "disp" "hp"   "drat"

最佳答案

您可以使用Reduce:

Reduce(c, n, accumulate=TRUE)

或者,从前两个元素开始:

Reduce(c, tail(n,-2), n[1:2], accumulate=TRUE)

恕我直言,它更简单,但速度并不快:

microbenchmark(
    lapply=lapply(seq_along(n)[-1], function(i)n[seq_len(i)]), 
    Reduce=Reduce(c, n, accumulate=TRUE)
)

Unit: microseconds
   expr  min   lq   mean median   uq    max neval
 lapply 10.2 10.6 22.056   10.8 11.0 1119.8   100
 Reduce 10.1 10.4 10.865   10.6 10.8   17.5   100

关于r - 从 R 中的向量中累积选取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775742/

相关文章:

r - 为 glm 使用 modelr::add_predictions

r - 将 2 列数据帧转换为完整的二进制矩阵

python - 在不使用全局变量的情况下保存函数的数据

python - 从另一个文件导入变量以在 python 中运行

javascript - 循环事件点击jquery同步当前状态

r - 在 Igraph 中绘图 - tkplot

r - 使用 data.table 按组显示重复项

php - PostGIS 函数集成在 php 示例中?

python - 一次遍历两个大数组

python - 如何从循环的每个实例收集信息?