【发布时间】:2020-09-06 20:26:07
【问题描述】:
我有以下数据:
df = data.frame(
stat = c('mean', 'var'),
value = c(-9, 10))
假设如果“stat”是“var”,我想取“value”的平方,如果不是,则什么都不做。
df %>%
mutate(
value = ifelse(stat=='var', sqrt(value), value))
我收到警告:
Warning message:
In sqrt(-9) : NaNs produced
为什么我会收到警告?不应该计算值 sqrt(-9) 因为“价值”是“平均”
【问题讨论】:
-
需要复数。无法获取 -root
-
它没有回答这个问题。 ifelse() 应该仅在 value == 'var' 时计算 sqrt()。如果没有,它应该让值保持原样。所以应该计算 sqrt(10) 但不是 sqrt(-9)。
-
链接问题中有很好的解释。
-
我刚刚更新了下面的答案,以展示如何在没有外部软件包的情况下使用 ifelse。
标签: r if-statement nan sqrt