gpt4 book ai didi

r - if else 语句和 if_else 的不同行为

转载 作者:行者123 更新时间:2023-12-04 10:46:35 27 4
gpt4 key购买 nike

我正在尝试创建一个函数,如果该列的类型为 char,则该函数将数据帧的数据类型转换为 factor,否则我不会更改任何内容。但这里的问题是我可以用 if else 语句做同样的事情,但不能使用 if_else 语句这是相同的代码注意 - 我正在使用 titanic 数据集

changetype = function(x)
if(class(x) == "character") as.factor(x) else x
changetype2 = function(x)
if_else(is.character(x),as.factor(x),x)
result1 = sapply(Train$Embarked, changetype)
result2 = sapply(Train$Embarked, changetype2)

result1 工作正常,而 result2 给我一个错误

Error: `false` has type 'character' not 'integer'

请帮忙谢谢

最佳答案

dplyr::if_else 专门用于强制您在 truefalse 参数中使用相同的类型。

来自:?dplyr::if_else:

Compared to the base ifelse(), this function is more strict. It checks that true and false are the same type.

在你的情况 x 是字符,所以在语句 if_else(is.character(x),as.factor(x),x) 中, true 参数为 factor (type integer) ,false 参数为 character . if_else 不喜欢这样,因此返回:

Error: false has type 'character' not 'integer'

此外,dplyr::if_elsebase::ifelse 旨在与向量一起使用,因此在您的情况下,它们不是好的选择。使用常规 if else 调用只会评估正确的条件,if_elseifelse 都会评估两者。

关于r - if else 语句和 if_else 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50525719/

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