Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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)_R_Dplyr - Fatal编程技术网

排列后如何正确切片?(R)

排列后如何正确切片?(R),r,dplyr,R,Dplyr,我无法根据指定的代码进行切片。请参见下面的可复制示例: library(alr4) library(tidyverse) modelUN <- lm(fertility ~ ppgdp, data = UN11) 库(alr4) 图书馆(tidyverse) 模型运行%pull(.resid)) UN11%%>%排列(残差)%%>%切片头(n=2) 这并没有给我最低的残差。我试图保存数据集(认为它是从原始df获取的),但结果是一样的。我应该如何继续?切片头或切片尾根据给定的n返回头行

我无法根据指定的代码进行切片。请参见下面的可复制示例:

library(alr4)
library(tidyverse)

modelUN <- lm(fertility ~ ppgdp, data = UN11)
库(alr4)
图书馆(tidyverse)
模型运行%pull(.resid))
UN11%%>%排列(残差)%%>%切片头(n=2)

这并没有给我最低的残差。我试图保存数据集(认为它是从原始df获取的),但结果是一样的。我应该如何继续?

切片头或切片尾根据给定的
n
返回头行和尾行。如果要得到两端,我们可以使用带有索引的
slice
1:2
-head)和
(n()-1):n()
作为尾部

library(dplyr)
UN11 %>% 
    dplyr::arrange(Residuals) %>%
    dplyr::slice(c(1:2, (n()-1):n()))

或者将
行号
头/尾

UN11 %>%
   dplyr::arrange(Residuals) %>%
   dplyr::slice(c(head(row_number(), 2), tail(row_number(), 2)))
#   region  group fertility  ppgdp lifeExpF pctUrban Residuals
#1 Europe  other     1.134 4477.7    78.40       49 -1.900575
#2 Europe  other     1.450 1625.8    73.48       48 -1.675868
#3 Africa africa     6.300 1237.8    50.04       36  3.161712
#4 Africa africa     6.925  357.7    55.77       17  3.758539
并使用
head

UN11 %>%
    arrange(Residuals)  %>% 
    head(2)
#  region group fertility  ppgdp lifeExpF pctUrban Residuals
#1 Europe other     1.134 4477.7    78.40       49 -1.900575
#2 Europe other     1.450 1625.8    73.48       48 -1.675868

或者另一个选项是
slice\u min/slice\u max
,并将它们与
bind\u行
绑定在一起(但它比
slice
中的索引选项效率更低,更不直接)


为清晰和正确而编辑。太好了!我的问题是切片没有根据排列函数给出前两行。@AmoghJoshi您想按“区域”、“组”分组吗“,?如果您运行此代码,如果按排列筛选,则前两行的剩余值为-1.90。但是,切片代码给出的第一个和最后一个值不正确。代码获取的前两个值分别为:-0.79和0.48(最后一行)@AmoghJoshi我得到了
-1.900575
-1.675868
作为
排列的第一行和第二行
好的,这很有效!我想你是对的!谢谢!
UN11 %>%
    arrange(Residuals)  %>% 
    head(2)
#  region group fertility  ppgdp lifeExpF pctUrban Residuals
#1 Europe other     1.134 4477.7    78.40       49 -1.900575
#2 Europe other     1.450 1625.8    73.48       48 -1.675868
UN11 %>% 
  slice_min(Residuals, n = 2) %>%
  bind_rows(UN11 %>% 
     slice_max(Residuals, n = 2))