gpt4 book ai didi

r - 在 R 中使用 ifelse

转载 作者:行者123 更新时间:2023-12-04 11:23:13 25 4
gpt4 key购买 nike

我正在尝试使用 if 在 R 中编写以下语句和 ifelse .样本数据为trial,x,y,z为trial的列)。

要编码的语句

if (x>0) {
if (y>0) {
l=2
}else{
l=5
}
if (z>0) {
m=l+2
}else{
m=5
}
}

使用ifelse的R代码

trial$l<-with(trial, ifelse((x>0 &y>0),2,ifelse((x>0 &y<=0),5,???)))
trial$m<-with (trial,ifelse((x>0 &z>0),l+2,ifelse((x>0 &z<=0),5,???)))

其中,???指定没有根据上述语句的值。换句话说 x<0 and y没有值。

接下来,我使用 if 和 ifelse 的组合来查看是否有效:

if(trial$z>0){
trial$l<-with(trial, ifelse(y>0,2,5))
trial$m<-with(trial, ifelse(z>0,l+2,5))
}

此代码没问题,但有一条警告消息(因为 z 是列向量)

In if (trial$z>0){
the condition has length>1 and only the first element will be used

我只想专注于使用 ifelse因为我只处理向量。但是,我在这方面没有运气。有什么想法吗?

最佳答案

如果你想使用 ifelse 和嵌套你可以这样做

test <- data.frame(x = 2, y = 5, z = 3)
with(test, ifelse(z > 0 & x > 0 | y > 3, "yes", "no"))

在这种情况下,您使用逻辑运算符来保护输出。如果z <= 0,你仍然会得到“否” ,但您可以很轻松地处理它。

with(test, ifelse(z > 0, ifelse(x > 0 | y > 3, "yes", "no"), NA))

嵌套 ifelse语句在任何语言中都很难遵循,因此如果您最终遇到的语句超过 3 个,请考虑匹配或 switch 语句。

关于r - 在 R 中使用 ifelse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17252288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com