从 R 中的列表中提取元素

Extracting elements from List in R

我是 R 的初学者。所以我正在尝试使用列表来理解 R。 x <- list(foo = 1:4, bar = 0.6) 我可以使用 y = x[1] 从 x 获取 foo 变量。 xy 都是列表,我可以使用 x[1]x 获取第一个元素,但是无法使用 yy 获取第一个元素y[1]y[1] 正在给予 $富 [1] 1 2 3 4 这里的xy有什么区别?

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