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
)映射到数据帧输出.
我有 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
)映射到数据帧输出.