如何在R中创建一个类数组?

ger*_*rsh 3 r

我想把类对象放到一个数组中,所以我可以引用多个类对象.但是,当我将它放入数组时,类信息似乎消失了.我该如何解决?

Rei*_*son 7

数组不是正确的工具,因为它们是原子的(因此只允许一种基本类型的数据),并且只允许数字或字符数据.列表是R中的通用向量,因此列表的每个组件都可以包含任何类型的对象.

以下是两个用户定义的S3类的示例:

> foo <- 1:10
> class(foo) <- "foo"
> bar <- "a"
> class(bar) <- "bar"
> 
> obj <- list(foo = foo, bar = bar)
> obj
$foo
 [1]  1  2  3  4  5  6  7  8  9 10
attr(,"class")
[1] "foo"

$bar
[1] "a"
attr(,"class")
[1] "bar"
Run Code Online (Sandbox Code Playgroud)


Sac*_*amp 5

我认为你在R中误解了"数组"的概念.R中的数组不是不同对象的向量,而是只有一个类的元素的多维对象.A list是R对象,可用于存储您想要的任何内容.如果需要,您甚至可以给它维度,这样您就可以获得一个多维列表,该列表对应于您描述的数组.必须使用双方括号编制索引.

例:

# A list with different objects:
foo <- list("A","B","C","D",1,2,3,4,TRUE,TRUE,FALSE,FALSE)

# Add dimensions:
dim(foo) <- c(2,2,3)
> foo
, , 1

     [,1] [,2]
[1,] "A"  "C" 
[2,] "B"  "D" 

, , 2

     [,1] [,2]
[1,] 1    3   
[2,] 2    4   

, , 3

     [,1] [,2] 
[1,] TRUE FALSE
[2,] TRUE FALSE

# index row 1 col 1 slice 1
> foo[[1,1,1]]
[1] "A"
Run Code Online (Sandbox Code Playgroud)