【发布时间】:2015-03-20 04:31:26
【问题描述】:
require(plyr)
require(dplyr)
set.seed(8)
df <-
data.frame(
v1 = runif(10, -1,1),
v2 = runif(10, -1,1))
问题:
作为mutate() 的一部分,我怎样才能将正确的值放入min() 函数中-基本上,我想将v3分配为v1 除以v1 和v2 中的最小值。
这不起作用:
df <-
df %>% mutate(v3=ifelse(v1 !=0, v1/min(v1,v2), 0))
我想我错过了一些非常简单的东西。
【问题讨论】:
-
你可以使用
pmin,即transform(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))