从 R 中的列表中提取元素
Extracting elements from List in R
我是 R 的初学者。所以我正在尝试使用列表来理解 R。
x <- list(foo = 1:4, bar = 0.6)
我可以使用 y = x[1]
从 x 获取 foo 变量。 x
和 y
都是列表,我可以使用 x[1]
从 x
获取第一个元素,但是无法使用 y
从 y
获取第一个元素y[1]
。 y[1]
正在给予
$富
[1] 1 2 3 4
这里的x
和y
有什么区别?
R
在这方面可能会造成混淆。问题是 x[1]
给你的是一个列表,而不是存储在列表第一个元素中的值。
假设x <- list(foo = 1:4, bar = 0.6)
,你可以通过两种方式从x中提取
您可以按索引进行子集化:
x[[1]]
将为您提供第一个向量中的值,而 x[1]
将为您提供一个包含 x
中第一个列表的列表
> x[[1]]
[1] 1 2 3 4
> x[1]
$foo
[1] 1 2 3 4
除了 x[[1]]
,您还可以根据您分配的名称对 x
进行子集化,即
> x$foo
[1] 1 2 3 4
y = x[1]
不起作用的原因是因为您没有将值 1 到 4 的向量分配给 y
,而是传递了一个列表。所以 y
是一个长度为 1 的列表。因此,您希望
y=x[[1]]
或
y=x$foo
这样,您可以根据需要对 y
进行子集化:
> y[1]
[1] 1
但是,对于您当前的方法 y = x[1]
,y
是一个列表,因此,您可以像处理普通列表一样对 y
进行子集化:
> y[[1]][1]
[1] 1
或
> y$foo[1]
[1] 1
我是 R 的初学者。所以我正在尝试使用列表来理解 R。
x <- list(foo = 1:4, bar = 0.6)
我可以使用 y = x[1]
从 x 获取 foo 变量。 x
和 y
都是列表,我可以使用 x[1]
从 x
获取第一个元素,但是无法使用 y
从 y
获取第一个元素y[1]
。 y[1]
正在给予
$富
[1] 1 2 3 4
这里的x
和y
有什么区别?
R
在这方面可能会造成混淆。问题是 x[1]
给你的是一个列表,而不是存储在列表第一个元素中的值。
假设x <- list(foo = 1:4, bar = 0.6)
,你可以通过两种方式从x中提取
您可以按索引进行子集化:
x[[1]]
将为您提供第一个向量中的值,而 x[1]
将为您提供一个包含 x
> x[[1]]
[1] 1 2 3 4
> x[1]
$foo
[1] 1 2 3 4
除了 x[[1]]
,您还可以根据您分配的名称对 x
进行子集化,即
> x$foo
[1] 1 2 3 4
y = x[1]
不起作用的原因是因为您没有将值 1 到 4 的向量分配给 y
,而是传递了一个列表。所以 y
是一个长度为 1 的列表。因此,您希望
y=x[[1]]
或
y=x$foo
这样,您可以根据需要对 y
进行子集化:
> y[1]
[1] 1
但是,对于您当前的方法 y = x[1]
,y
是一个列表,因此,您可以像处理普通列表一样对 y
进行子集化:
> y[[1]][1]
[1] 1
或
> y$foo[1]
[1] 1