Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 使用pmin从列选择中选择行最小值_R_Dplyr - Fatal编程技术网

R 使用pmin从列选择中选择行最小值

R 使用pmin从列选择中选择行最小值,r,dplyr,R,Dplyr,给定一个示例df(实际数据包含>100列) 但是,如果我想用contains()选择包含“x”的所有列,但以下操作失败 df %>% mutate( minx = pmin( contains("x"), na.rm = TRUE ) ) Error in mutate_impl(.data, dots) : Evaluation error: Variable context not set. 为什么不能使用contains()选择要与pmap一起使用的列?我在这里做错了什么?使

给定一个示例df(实际数据包含>100列)

但是,如果我想用contains()选择包含“x”的所有列,但以下操作失败

df %>% mutate( minx = pmin( contains("x"), na.rm = TRUE ) )
Error in mutate_impl(.data, dots) : 
  Evaluation error: Variable context not set.

为什么不能使用contains()选择要与pmap一起使用的列?我在这里做错了什么?

使用base
R

df$minx <- apply(df[, grepl('x', names(df))], 1, min)

使用基本
R

df$minx <- apply(df[, grepl('x', names(df))], 1, min)
这里有一个选择

library(tidyverse)
df %>% 
   select(contains("x")) %>%
   reduce(pmin) %>%
   mutate(df, minx = .)

或者正如注释中提到的@Wimpel,
select
可以嵌套在
mutate
调用中

df %>%
   mutate(minx = select(., contains("x")) %>% 
                    reduce(pmin, na.rm = TRUE))
这里有一个选择

library(tidyverse)
df %>% 
   select(contains("x")) %>%
   reduce(pmin) %>%
   mutate(df, minx = .)

或者正如注释中提到的@Wimpel,
select
可以嵌套在
mutate
调用中

df %>%
   mutate(minx = select(., contains("x")) %>% 
                    reduce(pmin, na.rm = TRUE))

这个怎么样
df$minx我不知道tidyverse,但是IIRS,
contains
是一个
select
函数助手,不用于
mutate
@Prem应该是
2
,用于列式应用。@count对行式操作不感兴趣?
conains()
仅在
select()中可用,你必须使用
mutate\u at()
这个怎么样
df$minx我不知道tidyverse,但是IIRS,
contains
是一个
select
函数助手,不用于
mutate
@Prem应该是
2
,用于列式应用。@count对行式操作不感兴趣?
conains()
仅在
select()中可用,您必须使用
mutate_at()
您可以在base R
do.call(pmin,df[grepl('x',names(df)))中执行相同的操作
。使用
apply
加1边距通常是一个错误的决定,也是一个有效的解决方案,但是@akrun提供的管道代码答案更适合我的需要。不过非常感谢你的回答。。每天学习:)你可以在base R
do.call(pmin,df[grepl('x',names(df)))中做同样的事情。
。使用
apply
加1边距通常是一个错误的决定,也是一个有效的解决方案,但是@akrun提供的管道代码答案更适合我的需要。不过非常感谢你的回答。。每天学习:)这工作完美无瑕,也适用于我的生产数据!tidyverse语法与我的其余代码完美契合。非常感谢你!为了能够在一行代码的数据中创建
mutate=minx
,而不干扰我的数据。frame,我将代码调整了一点:
df2%%>%mutate(minx=select(df,contains(“x”))%%>%reduce(pmin,na.rm=TRUE))%%>%
这对我的生产数据来说也是完美的!tidyverse语法与我的其余代码完美契合。非常感谢你!为了能够在一行代码的数据中创建
mutate=minx
,而不干扰我的data.frame,我将代码调整了一点:
df2%%>%mutate(minx=select(df,contains(“x”))%%>%reduce(pmin,na.rm=TRUE))%%>%