gpt4 book ai didi

r - 为什么 `as.numeric(c(1, 1.0, "1. 0", TRUE))` 为 `NA` 元素返回 `TRUE`?

转载 作者:行者123 更新时间:2023-12-04 03:23:26 25 4
gpt4 key购买 nike

为什么 TRUE 在这里被强制转换为 NA

as.numeric(c(1, 1.0, "1.0", TRUE))

但不是这里:

as.numeric(c(1, 1.0, TRUE))

最佳答案

因为它正在转换 TRUE"TRUE"随着"1.0"的介绍- 这只是 vector 的基本行为它只能有一个 class优先于 characternumeric .因此,向量中的任何字符都会将整体转换为 character

c(1, 1.0, "1.0", TRUE)
[1] "1" "1" "1.0" "TRUE"

这对其他类的转换也有效。

as.numeric(c(1, 1.0, "1.0", TRUE))
#[1] 1 1 1 NA
as.logical(c(1, 1.0, "1.0", TRUE))
[1] NA NA NA TRUE
as.logical(c(1, 1.0, TRUE))
[1] TRUE TRUE TRUE

在第三种情况下,TRUE 被强制转换为 1,除 0 外,所有其他值都将为 TRUE,而在第一种情况下,数值被类型转换,而“TRUE”是一个字符串,而事实并非如此。在第二种情况下,我们正在转换为逻辑,因此 "TRUE" , 转换为 TRUE其中其他人是“字符”,因此返回 NA

as.logical("1")
[1] NA

关于r - 为什么 `as.numeric(c(1, 1.0, "1. 0", TRUE))` 为 `NA` 元素返回 `TRUE`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68088263/

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