如何使用过滤器函数进行for循环?

时间:2019-08-08 14:45:00

标签: r

我在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循环不会

1 个答案:

答案 0 :(得分:0)

我同意@Clemsang。如果您要获取for循环以提取Pais == 1或Pais == 2处的所有相关信息,等等。将i放在引号之外将有效地显示for循环将您在

for (i in 1:length(unique(funcexpais_lista)))

也要记住一些内务处理,因为tidyverse已经包含dplyr和magrittr函数,所以您只需要在启动代码之前加载tidyverse!