r - 迭代2个变量for

问题描述 投票:4回答:2

在R中是否有一个构造,我们可以在R中同时使用两个变量进行迭代?像这样,

for(i in list1 and j in list2)

list1和list2可以是任何可迭代的。

r for-loop
2个回答
5
投票

如果for循环的内容可以写成某种函数,那么你可以使用mapply

a <- 1:10
b <- LETTERS[1:10]

a
[1]  1  2  3  4  5  6  7  8  9 10
b
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"

mapply(paste, a, b)
[1] "1 A"  "2 B"  "3 C"  "4 D"  "5 E"  "6 F"  "7 G"  "8 H"  "9 I"  "10 J"

当然,您必须将“粘贴”替换为带有2个元素(每个列表中的一个)作为输入的函数。也可以使用2个以上的列表/向量。


0
投票

通常,最好使用单个索引来迭代多个变量(相同长度),该索引充当引用列表中元素(变量)的索引:

var_list <- list(
  var1 = 1:10,          # 1, ..., 10
  var2 = letters[17:26] # q, ..., z
)

for (i in 1:length(var_list$var1)) {

  # Process each of var1 and var2
  print(paste(
    'var1:', var_list$var1[i],
    '; var2:', var_list$var2[i]
  ))

}
© www.soinside.com 2019 - 2024. All rights reserved.