Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中数组(list()和list()之间的差异_R - Fatal编程技术网

R中数组(list()和list()之间的差异

R中数组(list()和list()之间的差异,r,R,有人能告诉我,在R中,做以下事情的区别是什么: foo <- array(list()) foo来自数组 R中的数组可以有一个、两个或多个维度。这很简单 与其他属性一起存储的向量,给出 维度(属性“dim”)以及这些维度的可选名称 维度(属性“dimnames”) 事实上,你可以检查: foo <- array(list()) str(foo); # list() # - attr(*, "dim")= int 0 is.list(foo); # [1] TRUE is.array

有人能告诉我,在R中,做以下事情的区别是什么:

foo <- array(list())

foo来自
数组

R中的数组可以有一个、两个或多个维度。这很简单 与其他属性一起存储的向量,给出 维度(属性“dim”)以及这些维度的可选名称 维度(属性“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
索引的工作方式与使用
列表的工作方式相同:

foo[[1]];
#[1] 1
事实上

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

对@LenGreski的回答的补充:

虽然
array
s是同质结构,但它们可以包含
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
foo引用哈德利·威克姆的《高级R:

R的基础数据结构可以按维度(1d、2d、3d等)组织,也可以按同质(所有内容均为相同类型)或异质(内容为多种类型)组织。这就产生了数据分析中最常用的五种类型

使用此框架,阵列和数据帧之间的主要区别是:

  • 当所有元素的类型相同时,使用数组
  • 数组可以有两个以上的维度
  • 矩阵是二维数组的等价物
  • 参考文献 韦翰。H、 高级R,第13页

    array(list())
    的类仍然是
    “array”
    ,而
    foo[[1]]
    将返回一个错误。这是真的。但是
    class(foo)
    仍然是
    “array”
    ,而
    继承(foo,“list”)
    FALSE
    。当然,这并不意味着你的答案是错误的。这只是一个旁注。
    is.list(foo);
    #[1] TRUE
    
    foo <- array(list(a = 1, b = diag(3)));
    sapply(foo, class)
    #[1] "numeric" "matrix"
    is.array(foo);
    #[1] TRUE
    is.list(foo);
    #[1] TRUE
    
        Homogeneous      Heterogeneous
    ----------------------------------
    1d  Atomic Vector    List
    2d  Matrix           Data Frame
    nd  Array