我想使用切片点的变量对名为text
的向量进行子集化。问题是得到的矢量与输入矢量具有相同的长度,最后10个元素是NA。这是什么原因?
> data_starts_at+1
[1] 11
> length(text)
[1] 12335
> x = text[11:12335]
> length(x)
[1] 12325
> x = text[data_starts_at+1:length(text)]
> length(x)
[1] 12335
> tail(x)
[1] NA NA NA NA NA NA
更新
看起来这个问题与运算符优先级有关:
> x = text[(data_starts_at+1):length(text)]
> length(x)
[1] 12325
但是使用x = text[data_starts_at+1:length(text)]
正确地进行了子集化,只是在x
末尾附加了10个元素。
答案 0 :(得分:3)
这是括号的问题
x <- 1:10
data_starts_at <- 2
data_starts_at+1:10
[1] 3 4 5 6 7 8 9 10 11 12
# it means that you add data_starts_at at the vector 1:10
# then the final NA is because you ask for data that does not exist (11 & 12)
x[(data_starts_at+1):10]
[1] 3 4 5 6 7 8 9 10 #it's ok
HTH
答案 1 :(得分:1)
使用正确的括号:
x = text[(data_starts_at+1):length(text)]
您正在做的是获取索引1:length(text)
并将data_starts_at
添加到每个值中。