为什么用向量中的变量进行索引会产生 NA?
Why does indexing with variable in vector produce NAs?
我正在尝试对字符向量进行一些删减,然后偶然发现了一个小问题:
我想排除某个位置 i + 1 之前的所有元素,我也想排除它的最后一个元素。
现在奇怪的是:如果我使用 i + 1 进行索引,它会在新向量的末尾生成 NA。如果我改用数字,它会按预期工作(参见示例):
# create character vector
nl <- c(letters[1:10], "excl")
# this produces NAs:
i = 5
nl[i+1:length(nl)-1]
# this works fine
nl[6:length(nl)-1]
谁能解释为什么会这样?
我在互联网上找不到解释,对我来说真的没有意义。
提前致谢!
是因为运算符的优先级,用()
来屏蔽
nl[(i+1):length(nl)-1]
#[1] "e" "f" "g" "h" "i" "j
如果范围也应该包括减法
nl[(i+1):(length(nl) - 1)]
#[1] "f" "g" "h" "i" "j"
我正在尝试对字符向量进行一些删减,然后偶然发现了一个小问题: 我想排除某个位置 i + 1 之前的所有元素,我也想排除它的最后一个元素。 现在奇怪的是:如果我使用 i + 1 进行索引,它会在新向量的末尾生成 NA。如果我改用数字,它会按预期工作(参见示例):
# create character vector
nl <- c(letters[1:10], "excl")
# this produces NAs:
i = 5
nl[i+1:length(nl)-1]
# this works fine
nl[6:length(nl)-1]
谁能解释为什么会这样? 我在互联网上找不到解释,对我来说真的没有意义。
提前致谢!
是因为运算符的优先级,用()
来屏蔽
nl[(i+1):length(nl)-1]
#[1] "e" "f" "g" "h" "i" "j
如果范围也应该包括减法
nl[(i+1):(length(nl) - 1)]
#[1] "f" "g" "h" "i" "j"