“接收”;“1级无此类索引”;简单R脚本中的错误

“接收”;“1级无此类索引”;简单R脚本中的错误,r,split,R,Split,当我运行以下R代码块时: require(openair) require(png) topDir <- "C:/Users/djh/Desktop/WindRoses" subdirs <- c("Abbotsford_Observations") #, "Vancouver_Observations", "Abbotsford_Modelled", "Vancouver_Modelled") years <- c(1985) #, 1995, 2001, 2006) f

当我运行以下R代码块时:

require(openair)
require(png)

topDir <- "C:/Users/djh/Desktop/WindRoses"
subdirs <- c("Abbotsford_Observations") #, "Vancouver_Observations", "Abbotsford_Modelled", "Vancouver_Modelled")
years <- c(1985) #, 1995, 2001, 2006)

for(i in 1:length(subdirs)){
  for(j in 1:length(years)){
    wd <- paste(topDir, subdirs[i], years[j], sep="/")
    files <- list.files(wd, pattern = "\\.out$")
    for(k in 1:length(files)){
      theData <- data.frame(read.table(paste(wd, files[k], sep="/"), header = TRUE, sep=""))
      u <- theData$U10
      v <- theData$V10

      theData["windSpd"] <- sqrt(u^2 + v^2)
      theData["windDir"] <- (270 - (atan2(u/theData$windSpd, v/theData$windSpd)*(180/pi)))

      nameSplit <- strsplit(files[k], ".")

      png(file=paste(wd, "/", nameSplit[[1]], ".png", sep = ""))
      windRose <- windRose(theData, theData$windSpd, theData$windDir, angle = 22.5)
      dev.off()
    }
  }
}

这确实是错误发生的地方还是脚本中其他地方有明显的原因?

我认为在用于分割文件名的正则表达式定义中,点应该用双反斜杠掩盖,就像在分配
文件
变量的行中一样。此外,如果以后要使用
nameSplit[1]
选择拆分字符串的第一部分,则可以使用
unlist()
命令

因此,我建议您使用

nameSplit <- unlist(strsplit(files[k], "\\."))

nameSplit这个问题实际上来自另一行。openair软件包中的windRose命令要求输入风速和方向,因为它们在下一行中,而不是在原始问题中的显示方式

wind_rose <- windRose(theData, ws="windSpd", wd="windDir", angle = 22.5)

谢谢你的帮助。这次unlist命令确实起到了帮助作用,我最后在句点周围放置了[],因此该行现在看起来像这样。名称分裂
wind_rose <- windRose(theData, ws="windSpd", wd="windDir", angle = 22.5)