我在filter()
中使用for loop
函数时遇到问题,它不过滤数据帧而是创建一个i值。代码如下:
library(tidyverse)
library(magrittr)
library(dplyr)
funcexrds <- readRDS("C:/Users/chlav/Dropbox/Antidumping/Data/ano_pais_imp/funcex.rds")
funcexrds <- funcexrds %>% arrange(desc_cnae, pais)
View(funcexrds)
funcexpais_lista <- funcexrds %>% select(pais) %>% as.list()
funcexcnae_lista <- funcexrds %>% select(desc_cnae) %>% as.list()
subset1 <- filter(funcexrds, pais == "África do Sul", desc_cnae == "Abate de reses, exceto suínos")
for (i in 1:length(unique(funcexpais_lista))) {
funcexrds_t <- filter(funcexrds, pais == "i")
}
如您所见,如果您重现代码,subset1
将按预期返回已过滤的数据集,但是for循环不会
答案 0 :(得分:0)
我同意@Clemsang。如果您要获取for循环以提取Pais == 1或Pais == 2处的所有相关信息,等等。将i放在引号之外将有效地显示for循环将您在指示的数字放在哪里>
for (i in 1:length(unique(funcexpais_lista)))
也要记住一些内务处理,因为tidyverse已经包含dplyr和magrittr函数,所以您只需要在启动代码之前加载tidyverse!