Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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:在dplyr::mutate()中使用min()_R_Min_Dplyr - Fatal编程技术网

R:在dplyr::mutate()中使用min()

R:在dplyr::mutate()中使用min(),r,min,dplyr,R,Min,Dplyr,我想我错过了一些非常简单的东西。从?min的帮助页面: pmax和pmin将一个或多个向量(或矩阵)作为参数和 返回一个向量,给出函数的“平行”最大值(或最小值) 向量 另一方面: max和min返回中所有值的最大值或最小值 他们的论点 所以您想在这里使用pmin。对于dplyr,一个选项(如上所述)如下: df <- df %>% mutate(v3=ifelse(v1 !=0, v1/min(v1,v2), 0)) 这里很好的副作用是,您可以避免使用if

我想我错过了一些非常简单的东西。

?min的帮助页面:

pmax和pmin将一个或多个向量(或矩阵)作为参数和 返回一个向量,给出函数的“平行”最大值(或最小值) 向量

另一方面:

max和min返回中所有值的最大值或最小值 他们的论点

所以您想在这里使用
pmin
。对于dplyr,一个选项(如上所述)如下:

  df <- 
         df %>% mutate(v3=ifelse(v1 !=0, v1/min(v1,v2), 0))

这里很好的副作用是,您可以避免使用
ifelse
,而只是与逻辑向量(TRUE/FALSE,然后转换为1/0)叠加。

您可以使用
pmin
转换(df,v3=ifelse(v1!=0,v1/do.call(pmin,df),0))
在这里加载
plyr
包有什么特别的原因吗?我不记得应该先加载哪一个,但在这种情况下,你根本不应该加载
plyr
df%>%mutate(v3=(v1!=0)*v1/pmin(v1,v2))
?这里有一种使用
do
的方法,即
df%>%rowwise()%>%do(data.frame(,.v3=(.v1!=0)*.$v1/min(.v1,.v2))
您可以将
mutate
rowwise
-
df%>%rowwise%>%mutate(v3=ifelse(v1!=0,v1/min(v1,v2),0))一起使用

  df <- 
         df %>% mutate(v3=ifelse(v1 !=0, v1/min(v1,v2), 0))
df %>% mutate(v3 = (v1 != 0) * v1/pmin(v1,v2))