gpt4 book ai didi

r - 如何在R中获取对象的容器类型?

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

假设我有一个名为 v 的对象,我如何找出它的容器类型(向量、列表、矩阵等),而不尝试每个 is.vector(v)、is.list(v) .. . ?

最佳答案

以下三个功能对您有帮助:mode , strclass
首先,让我们制作一些数据:

nlist <- list(a=c(1,2,3), b=c("a", "b", "c"), c=matrix(rnorm(10),5))
ndata.frame <- data.frame(a=c("a", "b", "c"), b=1:3)
ncharvec <- c("a", "b", "c")
nnumvec <- c(1, 2, 3)
nintvec <- 1:3

那么让我们使用我上面提到的函数:
mode(nlist)
[1] "list"

str(nlist)
List of 3
$ a: num [1:3] 1 2 3
$ b: chr [1:3] "a" "b" "c"
$ c: num [1:5, 1:2] -0.9469 -0.0602 -0.3601 0.9594 -0.4348 ...

class(nlist)
[1] "list"

现在对于数据框:
mode(ndata.frame)
[1] "list"

这可能会让您感到惊讶,但数据框只是一个带有 data.frame 类属性的列表。
str(ndata.frame)
'data.frame': 3 obs. of 2 variables:
$ a: Factor w/ 3 levels "a","b","c": 1 2 3
$ b: int 1 2 3
class(ndata.frame)
[1] "data.frame"

请注意,向量有不同的模式:
mode(ncharlist)
[1] "character"
mode(nnumvec)
[1] "numeric"
mode(nintvec)
[1] "numeric"

也可以看到,虽然 nnumvecnintvec看起来相同,它们却大不相同:
str(nnumvec)
num [1:3] 1 2 3
str(nintvec)
int [1:3] 1 2 3

class(nnumvec)
[1] "numeric"
class(nintvec)
[1] "integer"

根据您想要的这些功能中的哪一个来确定您使用的功能。 str通常是查看变量的好函数,而其他两个函数在函数中更有用。

关于r - 如何在R中获取对象的容器类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11623753/

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