R中的If-else循环出错

R中的If-else循环出错,r,error-handling,R,Error Handling,我在R中编写一个代码。首先,我在数据集中创建一个空白列,并根据某些条件在该列中指定0和1值。这是我的密码 #Creating a empty column in the data file Mydata$final <- ""; #To assign 0,1 value in final variable if(Mydata$Default_Config == "No" & is.na(Mydata$Best_Config)=="TRUE" & (Mydata$Almo

我在R中编写一个代码。首先,我在数据集中创建一个空白列,并根据某些条件在该列中指定0和1值。这是我的密码

#Creating a empty column in the data file 
Mydata$final <- "";

#To assign 0,1 value in final variable
if(Mydata$Default_Config == "No" & is.na(Mydata$Best_Config)=="TRUE" & (Mydata$AlmostDefaultConfig!=1 | Mydata$AlmostDefaultConfig!=3)){
  Mydata$final <- 1
  }else{
  Mydata$final <- 0  
  }

如何修复此错误?请帮帮我。提前感谢

您的问题是矢量化<代码>如果未矢量化。您在
if
语句中的每次比较中测试多个值,R告诉您它将只使用第一个值,因为
if
没有矢量化。您需要
ifelse
,它是矢量化的:

ifelse( Mydata$Default_Config == "No" & is.na(Mydata$Best_Config)=="TRUE" & (Mydata$AlmostDefaultConfig!=1 | Mydata$AlmostDefaultConfig!=3) , 1 , 0 )
下面是一个可复制的示例。如果
x
5,而
y
为偶数,则返回
1
,否则返回
0

x <- 1:10
# [1]  1  2  3  4  5  6  7  8  9 10

y <- seq(1,30,3)
# [1]  1  4  7 10 13 16 19 22 25 28

x > 5
# [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE

y %% 2 == 0
# [1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE

ifelse( x > 5 & y %% 2 == 0 , 1 , 0 )
# [1] 0 0 0 0 0 1 0 1 0 1
x5&y%%2==0,1,0)
# [1] 0 0 0 0 0 1 0 1 0 1

另一种方法是利用
R
的强制。您有一组可矢量化的条件,R很乐意将TRUE/FALSE转换为1/0,因此您可以这样编写:

Mydata$final <- (  (Mydata$Default_Config == "No") *( is.na(Mydata$Best_Config)=="TRUE") *  (Mydata$AlmostDefaultConfig!=1 +  Mydata$AlmostDefaultConfig!=3))  )

Mydata$final Hi,因为您在这里相对较新,所以您可能想阅读和了解它是如何工作的。如果当您收到解决问题的答案时,您通过单击小复选标记或向上投票一个有用的答案来接受它,那么StackOverflow对每个人来说都更有价值。你绝对没有义务这样做,但是如果一个答案确实解决了你的问题,这是一个“回馈”网站的好方法。谢谢
Mydata$final <- (  (Mydata$Default_Config == "No") *( is.na(Mydata$Best_Config)=="TRUE") *  (Mydata$AlmostDefaultConfig!=1 +  Mydata$AlmostDefaultConfig!=3))  )