查找有关此R语法的信息时遇到问题。一个例子是:
> x <- 1:10
> (1:3)[ x ]
[1] 1 2 3 NA NA NA NA NA NA NA
你知道这叫什么吗?在哪些用例中它是有用的?我也很好奇这种语法的隐含操作。来自python,我不确定是否有类似的操作,在变量之前有一个slice/range。
:
并不是真正的"切片";这是seq()
的快捷方式。所以1:3
和seq(1,3)
是一样的。这与任何其他向量的行为一样。因此,您可以使用[]
对该向量进行索引。如果传递一个向量中不存在的索引,则得到NA
。所以
(1:3)[ x ]
基本上与相同
c(1, 2, 3)[ c(1,2,3,4,5,6,7,8,9,10) ]
您只是在按索引对向量进行子集设置。就像
z <- c(5,10,15,20)
z[c(2,4)]
# [1] 10 20
返回第2个和第4个元素。
您在示例中看到的值并非来自x
。考虑
x <- c(1,2,3)
(100:91)[x]
# [1] 100 99 98
您可以看到这些值不是来自x
,而是来自序列。x
只是用于索引。