在 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)
我有多个向量 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
}
有趣的是,
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)