我在R中有一个脚本,我正在尝试使用该脚本通过某个变量来分隔多个数据帧。我目前正在使用循环来执行此操作,想知道是否可以代替使用lapply
或类似的函数。
循环本质上需要一个数据帧df
,该数据帧具有名为Time
的列。时间值以小时为单位,范围是0-48乘以6的倍数(这是索引列表所包含的值)。
代码应该创建一个名为data.time.0的新数据帧,其中包含time = 0的所有行,依此类推,对于每个time值。
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
,并且我想使用向量运算而不是循环。这可能吗?我该怎么办?
答案 0 :(得分:1)
将直接翻译为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的评论。很可能有一种更简单的方法。