我们如何在 R 中的索引操作中进行操作?

How can we do operations inside indexing operations in R?

例如,让我们想象一下 R 中的以下向量:

a <- 1:8; k <- 2

我想做的是获取例如 2k 到 3k 之间的所有元素,即:

interesting_elements <- a[2k:3k]
Erreur : unexpected symbol in "test[2k"
interesting_elements <- a[(2k):(3k)]
Erreur : unexpected symbol in "test[2k"

不幸的是,在 R 中以这种方式索引向量是行不通的,我能做这种操作的唯一方法似乎是创建一个特定的变量 k' 存储 2k 的结果,另一个 k'' 存储结果3k.

有没有另一种方法,不用每次都创建一个新变量,在索引时进行操作?

R 不像其他语言那样将 2k 解释为标量乘法。您需要使用明确的 arithmetic operators.

如果您尝试访问 a46 元素,那么您需要使用 * 括号:

a[(2*k):(3*k)]
[1] 4 5 6

如果您省略括号,则序列将先求值然后乘法:

2*k:3*k
[1]  8 12

相同
(k:3)*2*k
[1]  8 12