繁体   English   中英

对列向量进行行操作

[英]Make rowwise operations on a vector of columns

我想了解如何获得在字符串向量中定义的一组列的行式最小值,即如何使用以下输入获得以下输出:

输入:

t <- data.frame(x= c(1,2,3,4), y= c(2,3,4,5), z = c(4,5,6,7))
vars. <- c('x', 'y')

我的(不工作)建议:

t %>% rowwise %>% mutate(min_x_y = min(vars(vars.)))

输出应该是:

  x y z min_x_y
1 1 2 4       1
2 2 3 5       2
3 3 4 6       3
4 4 5 7       4

我们可以使用pmap_dblpurrr

library(dplyr)
library(purrr)

t %>% mutate(min_x_y = pmap_dbl(select(., vars.), min))

#  x y z min_x_y
#1 1 2 4       1
#2 2 3 5       2
#3 3 4 6       3
#4 4 5 7       4

一个基本的 R 版本是

t$min_x_y <- do.call(pmin, t[vars.])

已经建议的方法的另一种替代方法是使用 tidy evaluation 和pmin的组合:

# convert character vector of variable names into symbols
vars. <- c('x', 'y') %>% dplyr::syms()

# use tidy evaluation to pass symbols to pmin inside a mutate call
t %>% 
  mutate(min_x_y = pmin(!!!vars.))
#>   x y z min_x_y
#> 1 1 2 4       1
#> 2 2 3 5       2
#> 3 3 4 6       3
#> 4 4 5 7       4

你可以用不同的方式做到这一点,一种是;

t <- data.frame(x= c(1,2,3,4), y= c(2,3,4,5), z = c(4,5,6,7))
vars. <- c('x', 'y')

t$min_x_Y=t(as.data.frame(t(t)) %>%
  summarise_all(funs(min)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM