在第1级和第34级接收"没有这样的索引;简单R脚本中的错误

时间:2015-07-06 16:58:12

标签: r split

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

.rectangle

我收到错误:

  

" .subset2(x,i,exact = exact)出错:在1级"没有这样的索引整个代码运行后

在堆栈交换中查看此错误的其他实例,似乎它可能链接到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() } } } 的字符串拆分,但没有一个答案解决了我的问题。

注意:我尝试在files[k]上使用unlist,但未解决问题。

我试图分割的字符串的一个例子是:

nameSplit

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

2 个答案:

答案 0 :(得分:0)

我认为在用于拆分文件名的正则表达式定义中,点应该用双反斜杠屏蔽,因为它是在分配了files变量的行中完成的。此外,如果之后您想要使用unlist()选择拆分字符串的第一部分,nameSplit[1]命令可能会很有用。

因此我建议您使用

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

并查看问题是否仍然存在。

希望这有帮助。

答案 1 :(得分:0)

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

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