在R中写入if/ifelse函数
我试图编写一个函数,以便使用if函数根据另一个变量(Site0)的条件创建一个变量(BBDR)。我有以下使用if函数的代码在R中写入if/ifelse函数,r,function,variables,if-statement,dataframe,R,Function,Variables,If Statement,Dataframe,我试图编写一个函数,以便使用if函数根据另一个变量(Site0)的条件创建一个变量(BBDR)。我有以下使用if函数的代码 x1 <- (africanaDamRate$BB6-africanaDamRate$BB0)/29 x2 <- (africanaDamRate$BB6-africanaDamRate$BB0)/22 x3 <- (africanaDamRate$BB6-africanaDamRate$BB0)/34 x4 <- (africanaDamRate$
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)
x1您的ifelse语句是错误的。可以这样写:
africanaDamRate$BBDR <- ifelse(africanaDamRate$Site0 == 1, x1,
ifelse(africanaDamRate$Site0 == 2, x2,
ifelse(africanaDamRate$Site0 == 3, x3,
ifelse(africanaDamRate$Site0 == 4, x4, NA))))
Africanadmrate$BBDRAfricanadmrate$BBDR编辑使上述建议无效,但它很容易适应(Africanadmrate$BB6 Africanadmrate$BB0)/c(29,22,34,30)[Africanadmrate$Site0]
假设没有可利用的模式,R-ish方式将是data.frame(x1,x2,x3,x4)[cbind
但拉特罗对这个问题的评论是superior@RyanRothman,如果这回答了您的问题,请单击以接受答案。这也有助于你的声誉SO@phiver我想不是。但是这种方法是可以推广的。@phiver推广的方法是A.韦伯建议的。谢谢大家的帮助。非常感谢!
africanaDamRate$BBDR <- ifelse(africanaDamRate$Site0 == 1, x1,
ifelse(africanaDamRate$Site0 == 2, x2,
ifelse(africanaDamRate$Site0 == 3, x3,
ifelse(africanaDamRate$Site0 == 4, x4, NA))))