【发布时间】:2019-02-02 16:07:16
【问题描述】:
我实际上正在学习 R,但我不明白为什么这个简单的作业不起作用。我想使用 dplyr 包的过滤器功能按年份划分子集。经过几次尝试,这里有一个使用 gapminder 数据集的可重现示例。
我可以使用子集函数、lapply 甚至匿名函数来解决这个问题,但是在这里,我只想了解为什么这个特定的代码不起作用。
library(gapminder)
library(dplyr)
for (i in unique(gapminder$year)) {
paste0("gapminder", i) <- print(gapminder %>%
filter(year == i))
}
有无打印,同样的问题
【问题讨论】:
-
你的第二个例子不起作用,因为你有一个额外的右括号。
-
哦,谢谢!那时问题的一半不是问题。我要编辑这个问题,没有人对额外括号问题感兴趣......
-
R 中没有这样的代码。如果不能在赋值函数的左侧使用粘贴,则不能。即R中没有像
`paste0<-`这样的功能,所以这是不可能的。您宁愿使用等效于<-的assign函数。这可以通过assign(paste0("gapminder", i),gapminder %>% filter(year == i))来完成。但这不是最好的方法。您可以使用年份split您的数据。即split(gapminder,gapminder$year)然后使用setNames设置名称,然后通过唱list2env(...,.GlobalEnv)列出环境。不过没必要
标签: r loops filter dplyr subset