你可以在管道dplyr函数中嵌入一个unpiped dplyr函数吗?

时间:2016-02-23 10:07:02

标签: r dplyr

以下代码正常工作并返回一个5行长的数据框。这正是我想要的。

distDF <- as.data.frame(gDistance(kmlIn_sp, fsl_sp, byid = TRUE)) %>% 
                mutate(fslID = row_number()) %>% 
                filter(Col1 < 1000) %>% 
                arrange(Col1) 

输出数据框第一行的fslID6

以下代码可以自行运行,并从fslDF数据框中返回我想要的确切值。它也适用于上面创建的fslID数据框中的所有其他distDF个数字。

filter(fslDF, row_number() == 6)[["TYPE"]]

但是,当我尝试将%>%数据框distDF传递到mutate函数并使用上面给出的嵌套filter函数时,例如:

distDF <- as.data.frame(gDistance(kmlIn, fslDF, byid = TRUE)) %>% 
                mutate(fslID = row_number()) %>% 
                filter(Col1 < 1000) %>% 
                arrange(Col1) %>% 
                mutate(TYPE = filter(fslDF, row_number() == fslID)[["TYPE"]])

我得到以下内容:

Error: incorrect length (5), expecting: 21

length(distDF)是5;而length(fslDF)是21。

有没有办法让它发挥作用?

在第一个filter函数之前,distDF数据帧长度为21.在第一个filter函数之后,distDF数据帧长度为5.因此,通过代码到达第二个mutate函数的时间,distDF数据帧长度为5.为什么嵌套的filter函数在最后一直看到回到开头的数据框长度为21的管道?

0 个答案:

没有答案