R - 使用 dplyr 进行循环,用于跨多个数据帧对数据进行子集化

R - For loop with dplyr for subsetting data across multiple data frames

我有 50 个包含温度和湿度数据的数据框,我想创建一个新的数据框,其中包含每个数据框的特定行。首先,我创建了一个列表 (onomata_list),其中我导入了所有 50 个数据框,其次我创建了一个虚拟数据框 (All_stations_30_6_17) 以“发送”每个数据帧中的行,最后我编写了以下 for 循环以实现上述目的:

 for(i in 1:length(onomata_list)){
  new_df <- onomata_list[[i]] %>% filter(date == "2017-06-30" & time == "17:00")
  All_Stations_30_6_17 <- rbind(All_stations_30_6_17,new_df)
}

很遗憾,它不起作用,我收到以下消息:

rbind 错误(All_stations_30_6_17,new_df): 找不到对象 'All_stations_30_6_17'

它试图在过去的几个小时内解决它,但我没有运气。有什么建议吗?

如果您有数据帧列表,这应该有效:

library(purrr)
library(dplyr)

All_Stations_30_6_17 <- map_dfr(onomata_list, ~ filter(.x, date == "2017-06-30" & time == "17:00"))

地图函数通常遍历列表元素。这里 map_drc 会将 purrr 样式函数(用 ~ 表示)映射到 onomata_list 的列表元素上,然后将行绑定(因此 _dfr)映射到数据帧输出.