r - 我可以使用“lapply”在 R 中重写这个循环吗?
问题描述
我在 R 中有一个脚本,我试图用它来通过某个变量分隔几个数据帧。我目前正在使用循环来执行此操作,并想知道是否可以使用lapply
或类似的功能。
循环本质上是一个数据框,df
,它有一个名为 的列Time
。时间值以小时为单位,范围为 0-48 乘以 6 的倍数(这是索引列表包含的内容)。
代码应创建一个名为 data.time.0 的新数据框,其中包含时间 = 0 的所有行,以此类推每个时间值。
library(tidyverse)
index = seq(from = 0, to = 48, by = 6)
for (i in index) {
name = paste("data.time."+i,sep = "")
currentdf = filter(df,df$time == i)
assign(name,currentdf)
}
但是,我听说assign
应该尽可能避免使用,我想使用向量运算而不是循环。这可能吗?我该怎么做?
解决方案
直接翻译lapply()
为
mylist <- lapply(seq(from = 0, to = 48, by = 6), function(x){
filter(df, df$time == x)
})
names(mylist) <- paste("data.time.", seq(from = 0, to = 48, by = 6),sep = "")
不过,我同意@Roland 的评论。很可能有一种更简单的方法。
推荐阅读
- javascript - 使用 Chrome 调试器或 Firefox 开发工具,我可以获得在模块中输入和退出的所有 JavaScript 函数的日志吗?
- oracle - 使用 ONLINE 删除约束
- javascript - 如何将变量传递给javascript中动态创建的按钮的onclick函数?
- python - 在 Python 中将类型字节转换为字符串
- python - 比较两个 JSON 文件并更新修改
- javascript - Vue js,如何根据url参数动态更新内容?
- javascript - 如何使用 javascript 更改超链接的活动颜色?
- r - R 的 hist 函数在大型数据集上运行极其缓慢
- javascript - 如何在 React 中使用“useErrorHandler()”?
- powerbi - 无法将事实表连接到日历表