Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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
使用dplyr将函数应用于行中的选定列_R_Dplyr_Row - Fatal编程技术网

使用dplyr将函数应用于行中的选定列

使用dplyr将函数应用于行中的选定列,r,dplyr,row,R,Dplyr,Row,新的dplyr1.0.0版实现了这一点 跨允许在整列上应用函数,例如使用排序和所有内容(): 但是有没有一种方法可以直接到达: V1 V2 V3 V4 V5 1 1 3 5 5 5 2 2 2 4 5 5 3 1 1 2 2 3 4 1 1 2 2 3 5 1 1 4 5 5 与列的情况一样?我们可以直接使用pmap,而不是跨行/c\u的两个步骤 library(dplyr) library(purrr) df %>%

新的
dplyr
1.0.0版实现了这一点

允许在整列上应用函数,例如使用
排序
所有内容()

但是有没有一种方法可以直接到达:

  V1 V2 V3 V4 V5 
1  1  3  5  5  5 
2  2  2  4  5  5 
3  1  1  2  2  3 
4  1  1  2  2  3 
5  1  1  4  5  5 

与列的情况一样?

我们可以直接使用
pmap
,而不是跨
行/c\u的两个步骤

library(dplyr)
library(purrr)
df %>% 
    pmap_dfr(~ set_names(sort(c(...)), names(df)))
# A tibble: 5 x 5
#     V1    V2    V3    V4    V5
#  <int> <int> <int> <int> <int>
#1     1     3     5     5     5
#2     2     2     4     5     5
#3     1     1     2     2     3
#4     1     1     2     2     3
#5     1     1     4     5     5

谢谢@akrun的回答。它是否也适用于任何情况,例如,如果我使用select(is.numeric)而不是everything()?谢谢@akrun,
transmute
正是我想要的@谢谢你。我在想你之前对select的评论。你能更新你的帖子吗that@Waldi我更新了这篇文章,但它似乎对我来说仍然不直接。
dplyr
使处理行变得容易,但我认为它仍然不是处理行操作的最佳工具。@Ronak Shah,谢谢你的评论:我同意,处理行越来越容易了,但与圆柱相比,它还不是完全对称的
  V1 V2 V3 V4 V5 
1  1  3  5  5  5 
2  2  2  4  5  5 
3  1  1  2  2  3 
4  1  1  2  2  3 
5  1  1  4  5  5 
library(dplyr)
library(purrr)
df %>% 
    pmap_dfr(~ set_names(sort(c(...)), names(df)))
# A tibble: 5 x 5
#     V1    V2    V3    V4    V5
#  <int> <int> <int> <int> <int>
#1     1     3     5     5     5
#2     2     2     4     5     5
#3     1     1     2     2     3
#4     1     1     2     2     3
#5     1     1     4     5     5
library(tidyr)
df %>%
   rowwise %>%
   transmute(sortlist = list(sort(c_across(everything())))) %>% 
   unnest_wider(c(sortlist)) %>%
   set_names(names(df))
# A tibble: 5 x 5
#     V1    V2    V3    V4    V5
#  <int> <int> <int> <int> <int>
#1     1     3     5     5     5
#2     2     2     4     5     5
#3     1     1     2     2     3
#4     1     1     2     2     3
#5     1     1     4     5     5
df %>% 
  rowwise %>% 
  transmute(V1, V2, sortlist = list(sort(c_across(V3:V5)))) %>% 
  unnest_wider(c(sortlist)) %>%
  set_names(names(df))