R中数组(list()和list()之间的差异
有人能告诉我,在R中,做以下事情的区别是什么: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
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