gpt4 book ai didi

r - 应用返回奇怪的结果

转载 作者:行者123 更新时间:2023-12-04 09:38:33 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why does apply(x, 1, paste0(collapse="") leave white space between positive values?

(2 个回答)


2年前关闭。




我有一个像

df <- data.frame(ruleA = c('N', 'N', -1), ruleB = c(0, 0, -1))

其中元素'N'通过规则A,元素0通过规则B,我想逐行应用一个函数来查看每个观察(行)是否通过了所有规则。

一开始我试过

apply(df, 1, function(x) all(x %in% c('N', 0)))

我期待 (TRUE, TRUE, FALSE)但它实际上返回 (FALSE, FALSE, FALSE) .

问题是当我尝试

apply(df[1:2, ], 1, function(x) all(x %in% c('N', 0)))

它返回 (TRUE, TRUE) .为什么会发生这种情况?

然后我尝试了更多

apply(df, 1, function(x) x %in% c('N', 0))

并期待
(TRUE, TRUE, FALSE)
(TRUE, TRUE, FALSE)

但它返回
(TRUE, TRUE, FALSE)
(FALSE, FALSE, FALSE)

当我再次申请 df[1:2, ] 时只是,它返回正确的结果。元素 0 出了什么问题?请任何人帮助。

似乎将 -1 替换为 1-9 避免了空格,那么应用过程中涉及的数字如何?

最佳答案

c('N', 0) 的第 2 项|不是数字。强制为“0”。 “0”不等于0 .虽然 0 == "0" returns真的,相同(0, "0") 返回 FALSE . apply函数将始终强制转换为普通类。

有一个问题,我不清楚起源。看看这个:

apply(df,1,str)
Named chr [1:2] "N" " 0"
- attr(*, "names")= chr [1:2] "ruleA" "ruleB"
Named chr [1:2] "N" " 0"
- attr(*, "names")= chr [1:2] "ruleA" "ruleB"
Named chr [1:2] "-1" "-1"
- attr(*, "names")= chr [1:2] "ruleA" "ruleB"

出于某种原因 0 的强制到字符添加一个额外的空间。

关于r - 应用返回奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57130286/

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