gpt4 book ai didi

r - R 中的一切都是向量吗?

转载 作者:行者123 更新时间:2023-12-05 02:39:33 28 4
gpt4 key购买 nike

我已经在 Python 中使用 Pandas 对我收集的数据进行了一些操作和回归并回答了 SO 问题,并且认为学习它的灵感可能有助于我的理解。

我正在使用 learn-R 教程并在 vector 之后以及对 SO 和网络的一些挖掘,我得出这个结论:

# So assigning a value to v will create an atomic vector
# of length one with a type
v <- 1
is.vector(v) # TRUE
class(v) # 'numeric'
# But literals are also vectors? These all return TRUE
is.vector(1)
is.vector("string literal")
is.vector(TRUE)
is.vector("c")

# and lists are vectors too
l <- list(1, 2, 3)
is.vector(l) # TRUE

那么 R 中的一切都是向量吗?

最佳答案

不,有些东西在 R 中不是向量,但您希望存储数据的大多数方式都是向量。令人困惑的是 is.vector() 有一个奇怪的定义:它不允许属性。例如,

x <- 1:3
is.vector(x)
#> [1] TRUE
attr(x, "foo") <- "bar"
x
#> [1] 1 2 3
#> attr(,"foo")
#> [1] "bar"
is.vector(x)
#> [1] FALSE

reprex package 创建于 2021-09-07 (v2.0.0)

我会说 x 即使有属性也仍然是一个向量,但是 is.vector() 函数认为有属性的东西不是向量。举一个荒谬的例子:根据 is.vector(),因子不是向量,但您可以将它们视为:

x <- factor(letters[1:4])
is.vector(x)
#> [1] FALSE
x
#> [1] a b c d
#> Levels: a b c d
x[2:3]
#> [1] b c
#> Levels: a b c d

reprex package 创建于 2021-09-07 (v2.0.0)

因此,如果我们将向量定义为可以使用 [][[]] 进行索引的对象,那么大多数数据类型(从逻辑、整数构建的类型, numeric、complex、character 和 raw,以及列表)都是向量。 R 中没有这些类型的标量。

另一方面,如果您将向量定义为 is.vector() 返回 TRUE 的对象,则有很多数据类型不是向量:因子、矩阵、数组、时间序列、data.frames 等。所以不要那样做。 :-)

您使用文字的示例以这种方式工作,因为 R 不会以任何特殊方式处理文字值。它们只是赋予对象的表达式。

有些东西确实不是向量:NULL 对象、名称等语言对象(例如 as.name("x"))、环境、函数等.

关于r - R 中的一切都是向量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69091812/

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