我实际上正在学习 R,但我不明白为什么这个简单的任务不起作用。我想使用dplyr包的过滤器功能按年份划分子集。经过几次尝试,这里有一个使用gapminder数据集的可重现示例。
我可以使用子集函数、lapply,甚至匿名函数来解决这个问题,但在这里,我只想了解为什么这段特定的代码不起作用。
library(gapminder)
library(dplyr)
for (i in unique(gapminder$year)) {
paste0("gapminder", i) <- print(gapminder %>%
filter(year == i))
}
有无打印,同样的问题
这是因为你的任务是给一个函数 ( paste0
) 。
如果删除该部分,它会打印每个过滤后的数据帧:
library(gapminder)
library(dplyr)
for (i in unique(gapminder$year)) {
print(gapminder %>% filter(year == i))
}
您可以将每个分配给 a list
,如下所示:
my_list <- list()
library(gapminder)
library(dplyr)
for (i in seq_along(unique(gapminder$year))) {
year_filter <- unique(gapminder$year)[i] # each iteration we get another year
my_list[[i]] <- gapminder %>% filter(year == year_filter)
cat(paste0("gapminder", year_filter, " ")) # use cat if you want to print at each iteration
}
paste0
仅在转换为字符后连接向量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句