对于R中的循环(意外符号错误)

时间:2015-06-07 21:34:40

标签: r for-loop

我需要计算我下载的5个文件中的totalMin。文件名都具有相同的格式:

" 2013年7月 - citibike.csv" " 2013-08-citibike.csv"

" 2013-09-citibike.csv" " 2013-10-citibike.csv"

" 2013-11-citibike.csv" " 2013-12-citibike.csv"

我需要编写一个读取这些文件的for循环,计算每个文件的min(一个特定列),然后计算所有文件的整体min。

到目前为止,我有这个

numbers <- 07:12
filenames <- paste("2013-", numbers, "-citibike", ".csv", sep="")

overallMin <- 0
for (i in filenames) {
    trips <- read.csv(i)
    newMin <- min(trips)
    if (overallMin < newMin) {
        overallMin <- newMin
    }
}
overallMin

与csv部分混淆。另外我得到一个错误:&#34;中的意外符号(我在文件名中){trips = read.csv(i)newMin&#34;

  

2 个答案:

答案 0 :(得分:1)

直接定义文件名。另外,你需要指定列号,或者你想要所有文件的最小值?

filenames <-c("2013-07-citibike.csv", "2013-08-citibike.csv",
              "2013-09-citibike.csv", "2013-10-citibike.csv",
              "2013-11-citibike.csv", "2013-12-citibike.csv")

或使用sprintf获取正确的文件名

numbers <- 07:12
filenames <- paste("2013-", sprintf("%02d",numbers), "-citibike", ".csv", sep="")

overallMin <- 1e80 #big number or the minimum will probably be zero
desirecol <- 2
for (i in filenames) {
  trips <- read.csv(i)
  newMin <- min(trips[,desirecol])
  if (overallMin < newMin) {
    overallMin <- newMin
  }
}
overallMin

答案 1 :(得分:0)

错误消息&#34;意外符号&#34;几乎总是意味着缺少逗号或括号或其他一些愚蠢的语法错误。我必须不同意@ BrandonBertelson的评论。阅读错误消息通常有帮助。在这种情况下,我们知道Ii的替换是不恰当的,或者海报没有发布确切的错误消息或者有非打印字符他的编辑插入了。我无法通过将I替换为i来重现错误,因为有I()函数且解析器正确指出我给了{ {1}}错误类型的参数。

read.csv()

文件名错误的理论(我同意代码应该使用> for( i in 1:5) { my <- read.csv(I)} Error in read.table(file = file, header = header, sep = sep, quote = quote, : 'file' must be a character string or connection 不适合错误消息。我可以通过简单地将前两行放在同一行上来复制错误消息:

list.files

对于具体问题(除了形成仍然模糊不清的错误),这应该成功:

> for( i in 1:5) { my <- read.csv(i) newMin <- min(trips[,desirecol])}
Error: unexpected symbol in "for( i in 1:5) { my <- read.csv(i) newMin"