列表和括号

时间:2016-06-29 23:47:46

标签: r

我是R的新手并试图理解有关列表的一些事情。说我有以下内容:

n = c(2, 3, 5) 
s = c("aa", "bb", "cc", "dd", "ee")
b = c(TRUE, FALSE, TRUE, FALSE, FALSE)
x = list(n, s, b, 3)

我理解以下(我认为),因为我要求R返回第二个值列表(因为我使用的是单括号)。

x[2]
# [[1]]
# [1] "aa" "bb" "cc" "dd" "ee"

我不明白,因为我使用双括号,它应该返回一个值。实际上,我不是我期望R应该回到这里。我要求一个值,但第二组对象是另一个列表。

x[[2]]
# [1] "aa" "bb" "cc" "dd" "ee"

2 个答案:

答案 0 :(得分:4)

您似乎正在使用找到here的确切示例,尽管这可能是一个常见的列表示例。

本质上,x[2]是"切片",它是长度为1的list,包含x的第二项。 x[[2]] x的第二项。您可以使用class(x[2])class(x[[2]])对此进行验证。

在编程中,我发现在处理列表时避免单一括号是有帮助的,并为矢量,数组和data.frames保留它们。

答案 1 :(得分:-1)

X已成为列表清单。如果你只是运行x,你应该得到它的所有元素,那么x[[2]]结果应该是有意义的。

要获取第二个列表的第一个元素,请尝试x[[2]][1],它是“第二个对象x列表中的第一个对象。”

R中另一个有用的技巧是使用str(x)来显示对象的结构,在这种情况下是列表的类型及其内容。