在R中编写if / ifelse函数

瑞安·罗斯曼(Ryan Rothman)

我试图编写一个函数,以便使用if函数根据另一个变量(Site0)的条件创建一个变量(BBDR)。我有以下代码使用if函数。

x1 <- (africanaDamRate$BB6-africanaDamRate$BB0)/29
x2 <- (africanaDamRate$BB6-africanaDamRate$BB0)/22
x3 <- (africanaDamRate$BB6-africanaDamRate$BB0)/34
x4 <- (africanaDamRate$BB6-africanaDamRate$BB0)/30


F1 <- function(y){
if(africanaDamRate$Site0==1){africanaDamRate$BBDR<-x1}
if(africanaDamRate$Site0==2){africanaDamRate$BBDR<-x2}
if(africanaDamRate$Site0==3){africanaDamRate$BBDR<-x3}
if(africanaDamRate$Site0==4){africanaDamRate$BBDR<-x4}
}


africanaDamRate$BBDR<-F1(y)

但是,当我尝试此代码时,我收到“条件的长度大于1 ...”

我还尝试将ifelse函数与以下代码结合使用:

africanaDamRate$BBDR<-ifelse(c(africanaDamRate$Site0==1, x1, NA), c(africanaDamRate$Site0==2, x2, NA), c(africanaDamRate$Site0==3, x3, NA), c(africanaDamRate$Site0==4, x4, NA))

但是会出现“未使用的参数”错误。

有谁对我如何做到这一点有任何想法(无子集)?非常感谢!

瑞安

phiver

您的ifelse陈述是错误的。可以这样写:

africanaDamRate$BBDR <- ifelse(africanaDamRate$Site0 == 1, x1, 
                               ifelse(africanaDamRate$Site0 == 2, x2, 
                                      ifelse(africanaDamRate$Site0 == 3, x3, 
                                             ifelse(africanaDamRate$Site0 == 4, x4, NA))))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章