我们如何在 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.
如果您尝试访问 a
的 4
到 6
元素,那么您需要使用 *
和 括号:
a[(2*k):(3*k)]
[1] 4 5 6
如果您省略括号,则序列将先求值然后乘法:
2*k:3*k
[1] 8 12
与
相同
(k:3)*2*k
[1] 8 12
例如,让我们想象一下 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.
如果您尝试访问 a
的 4
到 6
元素,那么您需要使用 *
和 括号:
a[(2*k):(3*k)]
[1] 4 5 6
如果您省略括号,则序列将先求值然后乘法:
2*k:3*k
[1] 8 12
与
相同(k:3)*2*k
[1] 8 12