在 R 中动态分配一个向量

Assign a vector dynamically in R

我有多个向量 Di,其中 i = 1, 2,. .., 40. 现在在 for 循环中,我想对这些进行一些操作。以下伪代码总结了我的 objective.

for i in 1:40
    D = Di  # How to do this?
    # ... do some operations on D #

编辑:请注意每个 Di 是一个单独的向量。

将它们全部放在一个列表中,每个列表对象(向量)都可以使用索引符号访问。

MyVectors = list(D1 = c(1:10),
                 D2 = c(11:20))

> MyVectors[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10
> MyVectors[[2]]
 [1] 11 12 13 14 15 16 17 18 19 20

因此您可以这样访问它们:

for(i in 1:2){
        MyVectors[[i]] =  MyVectors[[i]] + 2
}

有趣的是,。对于这个问题,我坚持我在那个答案中描述的哲学。但是因为您有 40 个松散对象,而不是只有 2 个,所以 "separateness" 方法确实没有意义。您应该使用 "systematicness" 方法,如下所示:

Ds <- list(
    c(...), ## 1st vector
    c(...), ## 2nd vector
    ...
    c(...) ## 40th vector
);

for (i in seq_along(Ds)) {
    ## do some operations on Ds[[i]]
};

有趣的是,我一个小时前回答了另一个问题。同理,我们可以将vectors放在一个list中,然后在每个列表元素

中进行操作
 MyVectors = list(D1 = c(1:10),
             D2 = c(11:20))
 lapply(MyVectors, function(x) x +2)