x [[c(1,3)]]的递归定义的目的是什么?

时间:2014-06-05 19:41:59

标签: r subset

x[c(1, 3)]返回x的第一个和第三个元素,x[[c(1, 3)]]返回x的第一个元素的第三个元素。这似乎与我不一致。这两者似乎有完全不同的思维方式。为什么他们的标签类似?

第二种写作方式,x[[1]][[3]]对我来说似乎更直观。

1 个答案:

答案 0 :(得分:2)

是的,当您手动输入数字时,x[[c(1,3)]]相当于x[[1]][[3]],但在这种情况下如何:

a <- c(1,3)
x[[a]]

当然你可以把它写成

a <- c(1,3)
x[[ a[1] ]][[ a[2] ]]

但只有当你知道a将有2个元素时才有效。如果在创建和/或解析列表x时构建函数的一部分该怎么办?如果没有x[[a]]的选项,您将需要编写一个递归函数来访问a[1]的{​​{1}}元素,然后调用自身,并弹出第一个值x并且子集a的结果。 x语法更简单(也可能更安全)。