簡體   English   中英

在簡單的R腳本中收到“在1級沒有這樣的索引”錯誤

[英]Receiving “no such index at level 1” error in simple R script

當我運行以下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()
    }
  }
}

我收到錯誤:

在運行了整個代碼之后,“。subset2(x,i,精確=精確)中的錯誤:級別1上沒有這樣的索引”

在堆棧交換上查看此錯誤的其他實例,似乎它可能與files[k]的字符串拆分有關,但沒有任何答案可以解決我的問題。

注意:我試圖在unlist上使用nameSplit ,但無法解決問題。

我嘗試拆分的字符串的示例是:

wrfout_d04_1985-07-16.ts.abbotsford.out

這肯定是發生錯誤的地方,還是腳本中其他地方的明顯原因?

我認為在用於拆分文件名的正則表達式定義中,點應該用雙反斜杠屏蔽,因為在files變量分配所在的行中已完成。 另外,如果之后要使用nameSplit[1]選擇拆分字符串的第一部分,則unlist()命令可能會很有用。

因此,我建議您使用

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

並查看問題是否仍然存在。

希望這可以幫助。

問題實際上出在不同的地方。 openair軟件包中的windRose命令要求在下一行中輸入風速和風向,而不是在原始問題中如何顯示風速和風向。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM