微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R错误中的嵌套if和max if语句:未使用的参数

如何解决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 输入 ..1ifelse(...)。 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?