gpt4 book ai didi

r - 如何测试 R 对象是否是命名的数值向量?

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

我想知道是否有一种简单而可靠的方法来测试对象是否是命名的 numeric 向量。这是一个例子:

data <- c(2.3, 3.5, 5.7)
typeof(data)
#[1] "double"
mode(data)
#[1] "numeric"
str(data)
# num [1:3] 2.3 3.5 5.7
is.vector(data)
#[1] TRUE
is.numeric(data)
#[1] TRUE

从上面可以看出,我创建了一个numeric vector。现在我为元素指定名称。

named_vec <- structure(data, names = c('a', 'b', 'c'))
named_vec <- structure(data, names = c('a', 'b', 'c'))
str(named_vec)
# Named num [1:3] 2.3 3.5 5.7
# - attr(*, "names")= chr [1:3] "a" "b" "c"
names(named_vec)
#[1] "a" "b" "c"

我可以使用一些复合条件,例如:

if(is.vector(named_vec) & is.numeric(named_vec) & !is.null(names(named_vec)))           {
"named_vec is a named numeric vector"
} else {
"named_vec is not a named numeric vector"
}
#[1] "named_vec is a named numeric vector"

或类似这样的东西,但感觉它可能成为极端情况的牺牲品:

length(names(named_vec)) == length(named_vec)
#[1] TRUE
names(data)
#NULL

我正在寻找简洁而健壮的东西。

最佳答案

我在您的第一个解决方案(if 子句)中看到的唯一问题是向量的名称可能不完整,我不知道您的情况是否可以接受。

在第二种解决方案中,一个非数字命名的向量将通过验证,对吗?在我看来,这不是您想要的。

如果您可以提供更多详细信息,说明您希望通过此验证做什么,我可以为您提供更多帮助。

做起来也比较容易

is.vector(f, mode = "numeric")

因此您验证了两个条件(矢量和数字)。阅读 is.vector 帮助。

关于r - 如何测试 R 对象是否是命名的数值向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424622/

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