我是R的初学者。所以我正在尝试使用列表来理解R.
x <- list(foo = 1:4, bar = 0.6)
我可以使用y = x[1]
从x获取foo变量。 x
和y
都是列表,我可以使用x
从x[1]
获取第一个元素但是无法从y
获取第一个元素y[1]
。 y[1]
正在给予
$ FOO
[1] 1 2 3 4
这里x
和y
之间有什么区别?
答案 0 :(得分:2)
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