Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中写入if/ifelse函数_R_Function_Variables_If Statement_Dataframe - Fatal编程技术网

在R中写入if/ifelse函数

在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$

我试图编写一个函数,以便使用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)

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$BBDR
Africanadmrate$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))))