如何解决R错误中的嵌套if和max if语句:未使用的参数
对于 R 来说仍然很新,当另一个变量为正/负时,我想确定组内变量的最大值。具体来说,if l_diff<0
,我想在pos_n<0
时找到每个组中t的最大值。如果l_diff>0
,我想在pos_p>0
时找到每个组中t的最大值。示例数据:
l_diff <- c(-1,-1,1,1)
pos_n <- c(2,2,-4,-2,-5,4,8)
pos_p <- c(3,6,-7,-3,3,4)
t <- c(5,7,5,1)
group <- c(1,2)
db <- data.frame(cbind(l_diff,pos_n,pos_p,t,group))
所需的输出:
cmax<- c(6,5)
我尝试了以下方法:
db<-db %>%
group_by((group)) %>%
mutate(ifelse(l_diff<0,t1 = max(t[pos_n<0],ifelse(l_diff>0,t1 = max(t[pos_p >0])))))
但我收到以下错误:
错误:mutate()
输入 ..1
有问题。 x 未使用的参数 (t1 =
max(t[pos_n 0,t1 = max(t[pos_p > 0])))) i
输入 ..1
是 ifelse(...)
。 i 错误发生在第 1 组:(组)
= 1。
知道哪里出了问题或有其他建议吗?
解决方法
使用ifelse
,我们需要将赋值放在外面,同样,ifelse
用法中的所有参数都必须存在
ifelse(test,yes,no)
此处,在嵌套的第二个 no
中未找到 ifelse
。如果我们默认使用 case_when
作为 TRUE ~ NA
library(dplyr)
db %>%
group_by(group) %>%
mutate(t1 = ifelse(l_diff<0,max(t[pos_n<0]),ifelse(l_diff>0,max(t[pos_p >0]),NA))) %>%
ungroup
-输出
# A tibble: 11 x 6
# l_diff pos_n pos_p t group t1
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 -1 2 3 5 1 6
# 2 -1 2 4 7 1 6
# 3 -1 1 -5 3 1 6
# 4 -1 -4 6 1 1 6
# 5 -1 -2 -7 6 1 6
# 6 -1 -2 2 2 1 6
# 7 1 2 -3 7 2 5
# 8 1 1 3 5 2 5
# 9 1 -5 2 3 2 5
#10 1 4 1 2 2 5
#11 1 8 4 1 2 5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。