gpt4 book ai didi

r - R中数组(列表())和列表()之间的区别

转载 作者:行者123 更新时间:2023-12-01 11:18:08 27 4
gpt4 key购买 nike

谁能告诉我在 R 中做以下事情有什么区别:

foo <- array(list())

foo <- list()

我有这个疑问,因为我觉得我可以以相同的方式使用它们,所以我很想知道是否存在任何差异。提前致谢!

最佳答案

来自 ?array

An array in R can have one, two or more dimensions. It is simply a vector which is stored with additional attributes giving the dimensions (attribute ‘"dim"’) and optionally names for those dimensions (attribute ‘"dimnames"’).

确实你可以检查:

foo <- array(list())
str(foo);
# list()
# - attr(*, "dim")= int 0
is.list(foo);
# [1] TRUE
is.array(foo);
# [1] TRUE


foo <- list()
str(foo);
# list()
is.list(foo);
# [1] TRUE
is.array(foo);
# [1] FALSE

所以 array(list()) 是一个带有附加 dim 属性的 list


为了回应@clemens,让我们举一个不同的例子:

foo <- array(list(a = 1));
str(foo);
#List of 1
# $ : num 1
# - attr(*, "dim")= int 1

索引的工作方式与 list 相同:

foo[[1]];
#[1] 1

确实如此

is.list(foo);
#[1] TRUE

@LenGreski 回答的补充:

虽然数组同类结构,但它们可以包含list元素,每个元素可以包含多种类型(因为它们是不均匀结构)。

例如,

foo <- array(list(a = 1, b = diag(3)));
sapply(foo, class)
#[1] "numeric" "matrix"
is.array(foo);
#[1] TRUE
is.list(foo);
#[1] TRUE

关于r - R中数组(列表())和列表()之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47886187/

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