r - ifelse 的意外结果

标签 r

我从 ifelse 函数中得到了意想不到的结果:

vector <- factor(c('x', 'x', 'y', 'z'), levels = c('x', 'y', 'z'))
ifelse(class(vector) == "factor", yes = levels(vector), no =
unique(vector)) # Returns character "x" and not the expected c("x", "y",
"z")

# Manual debug
class(vector) == "factor" # TRUE
levels(vector) # [1] "x" "y" "z"

知道发生了什么吗?

最佳答案

我认为您只想使用 if 语句。不是ifelse()。后者旨在处理向量并返回长度等于输入长度的向量。如果您想针对不同条件返回不同数量的元素,只需使用 if

vector <- factor(c('x', 'x', 'y', 'z'), levels = c('x', 'y', 'z'))
xx <- if(class(vector) == "factor") levels(vector) else unique(vector)
xx

关于r - ifelse 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47816693/

相关文章:

windows - 来自相当于 wget 的 R 控制台窗口

r - 如何根据 NA 与字母表对值进行分组

r - 使用 R 的 Twitter 挖矿 (twitteR + tm) : error using tolower conversion

R 不绘制回归线

r - 当行之间的片段数不同时将字符串拆分为三列

具有非重复二项式的 R data.frame

r blogdown -- serve_site 在 Windows 中挂起

r - 如何处理 MatchIt 中无法识别的替换公式(例如)?

当所有数据均为 NA 时删除图例条目和构面

r - 如何在 R 中为这个嵌套的 for 循环编写更有效的代码?