Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用slice()作为[]的替代方法_R_Dplyr - Fatal编程技术网

R 使用slice()作为[]的替代方法

R 使用slice()作为[]的替代方法,r,dplyr,R,Dplyr,据我所知,slice()应该相当于在方括号内按数字选择行。有人能解释一下为什么我在下面的代码中得到两个不同的结果吗 library(nycflights13) library(tidyverse) flights %>% group_by(dest) %>% count(sort = TRUE) -> top_dest top_dest[1:20,] top_dest %>% slice(1:20) 此外,我想知道我应该使用什么来替换方括号并与管道功能相结合(这

据我所知,
slice()
应该相当于在方括号内按数字选择行。有人能解释一下为什么我在下面的代码中得到两个不同的结果吗

library(nycflights13)
library(tidyverse)

flights %>% group_by(dest) %>% count(sort = TRUE) -> top_dest

top_dest[1:20,]

top_dest %>% slice(1:20)


此外,我想知道我应该使用什么来替换方括号并与管道功能相结合(这样我就不需要两个命令行,只需要一个)。

得到不同结果的原因是因为您的数据是分组的。因此,
slice
为每个
dest
选择20行。分组对
top\u dest[1:20,]
没有影响。您可以
ungroup
dataframe,然后选择20行以获得相同的结果

library(dplyr)
top_dest %>% ungroup %>% slice(1:20)

得到不同结果的原因是数据分组。因此,
slice
为每个
dest
选择20行。分组对
top\u dest[1:20,]
没有影响。您可以
ungroup
dataframe,然后选择20行以获得相同的结果

library(dplyr)
top_dest %>% ungroup %>% slice(1:20)

我们可以使用
过滤器

library(dplyr)
top_dest %>%
    ungroup %>%
    filter(row_number() < 21)
库(dplyr)
顶部目标%>%
解组%>%
过滤器(行号()<21)

我们可以使用
过滤器

library(dplyr)
top_dest %>%
    ungroup %>%
    filter(row_number() < 21)
库(dplyr)
顶部目标%>%
解组%>%
过滤器(行号()<21)

slice不维护任何行顺序。因此,我们可以真正比较两者。顺便说一句,我们可以使用top_dest[1:20]开始dplyr格式的代码,因为结果也是一个tibble.Ok。因此,基本上没有办法将“top_dest[1:20,]”替换为管道流程中的一个步骤,我必须打破流程?slice不维护任何行顺序。因此,我们可以真正比较两者。顺便说一句,我们可以使用top_dest[1:20]开始dplyr格式的代码,因为结果也是一个tibble.Ok。所以,基本上没有办法用某种可以成为管道流动中的一个步骤的东西来取代“top_dest[1:20],我必须打破流动?这正是我需要做的!这样,我可以写下一个唯一的命令行。非常感谢!这正是我需要做的!这样,我可以写下一个唯一的命令行。非常感谢!非常感谢。
filter(row_number()<21)
slice(1:20)
完全相同吗?@user12703198是的,它返回前20行谢谢。
过滤器(row_number()<21)
切片(1:20)
完全相同吗?@user12703198是的,它返回前20行