r - 从 R 中的向量中累积选择元素
问题描述
我正在使用以下来累积(即,首先选择前 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
推荐阅读
- windows - 以系统用户身份在远程 PC 上运行 Cleanmgr
- html - 如何让 HTML 生成代码更高效
- file - 将文件移动到 ABAP 中的另一个目录
- java - 如何比较数组中的每个元素?
- identityserver3 - 来自身份服务器 3 的外部登录(通过 ADFS)以 http 状态代码 504 响应
- java - 由于 FXML 文件结构的更改,应用程序启动方法出现异常
- shopify - Forloop 打破了布局
- sql - sql查询查找每个业务的最早日期
- flutter - 我们可以在 Flutter 中动态设置小数点的精度吗
- jquery - ASP.NET MVC 5 - Bootstrap 5 - Jquery Modal hide 不再工作