如何在循环中打印列表中的元素?

时间:2017-06-07 14:51:23

标签: r for-loop

我试图了解for循环是如何工作的。我创建了一个如下所示的列表:

> ldf 

[[1]] [1] "David_T2.png"

[[2]] [1] "David_T3.png"

[[3]] [1] "COLOn_T2.png"

[[4]] [1] "COLOn_T4.png"

并创建一个这样的循环:

for (i in 1:length(ldf)){
 for (j in 2:length(ldf)){
 print(ldf[[i]])
 print(ldf[[j]])
} 
}

但我没有得到预期的结果,我希望它打印第一个,然后是第二个,然后是第三个文件,依此类推;相反,我得到了这个:

[1] "David_T2.png"
[1] "David_T3.png"
[1] "David_T2.png"
[1] "COLOn_T2.png"
[1] "David_T2.png"
[1] "COLOn_T4.png"
[1] "David_T2.png"

我无法理解为什么。

1 个答案:

答案 0 :(得分:1)

您只需要一个循环来迭代元素。拥有第二个嵌套循环会导致为列表中每个元素的执行最内层语句,而不是每个元素执行一次。

此外,没有必要迭代索引;您可以直接迭代列表项:

for (item in ldf) {
    message(item)
}

请注意,我在这里使用了message而不是print,因为这更合适。

但是,使用lapply也可以在没有循环的情况下编写:lapply是一个带另一个函数的函数(此处为print) ,并在每个元素上调用它:

lapply(ldf, message)