gpt4 book ai didi

r - R中If else循环中的错误

转载 作者:行者123 更新时间:2023-12-03 08:00:42 25 4
gpt4 key购买 nike

我正在用 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
}

我收到这个错误
Warning message:
In if (Mydata$Default_Config == "No" & is.na(Mydata$Best_Config) == :
the condition has length > 1 and only the first element will be used

我该如何解决这个错误?请帮帮我。提前致谢

最佳答案

您的问题是矢量化之一。 if未矢量化。您正在 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

关于r - R中If else循环中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743558/

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