我对R for循环的一段感到困惑

时间:2015-05-22 15:31:39

标签: r for-loop ggplot2

我正在修改现有的R脚本,我基本上在学习它的同时选择了R。我没有强大的编程背景(我正在学习),所以我希望有人可以简单地帮助解释这个for循环的一部分。 (注意这是在其他一些软件包中使用ggplot2)

files <- unique(SQLTable$file_names)
for (i in 1:3){
    dat <- subset(SQLTable,file_names==files[])
    g <- ggplot(dat) + geom_point(aes(x = id, y = Value), size = 1, shape = 19, colour = 'red') + 
        geom_line(aes(x = id, y = Value), size =.5) + 
        facet_grid(Measure ~., scales = "free")
    print(g)
}

不要担心SQLTable,file_names,id或Value,它们都是SQL表或列名。上面的代码是一个更大的脚本的一部分,但我试图找出(i in 1:3)在for循环中做了什么。我几乎得到了循环中发生的所有其他内容,但我已将其修改为(我在1:2中)一直到(i in 1:100)并且它似乎没有做太多改变。那么目的是什么?为什么它特别是1:3?我希望这不依赖于其他事情,但如果确实如此,也许你可以解释一下这部分在做什么?

编辑:当我运行该部分代码时,我收到以下消息6次。 geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?

接着是

Warning messages: 
1: In File_names == secnarios[]:
  longer object length is not a multiple of shorter object length
2: In File_names == secnarios[]:
  longer object length is not a multiple of shorter object length
3: In File_names == secnarios[]:
  longer object length is not a multiple of shorter object length

当我使用file_names==files[i]运行代码时,我得到了这个:

geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
Warning messages:
1: In loop_apply(n, do.ply) :
  Removed 3 rows containing missing values (geom_point).
2: In loop_apply(n, do.ply) :
  Removed 3 rows containing missing values (geom_point).
3: In loop_apply(n, do.ply) :
  Removed 3 rows containing missing values (geom_path).
4: In loop_apply(n, do.ply) :
  Removed 3 rows containing missing values (geom_path).

1 个答案:

答案 0 :(得分:1)

循环本身没有i,这只会重复{ ... }三次中的任何内容。你只是重新计算所有内容并覆盖相同的变量三次,或者在你的情况下为100.这就是为什么它不会改变任何东西。

您得到错误6次,因为每次迭代都会导致两个问题。