Error: missing value where True/False

Error: missing value where True/False

我正在尝试删除列表中具有标签“.dsw”的所有值。我的列表是使用函数 list.files 的文件列表。这是我的代码:

for (file in GRef) {
  if (strsplit(file, "[.]")[[1]][3] == "dsw") {
     #GRef=GRef[-file]
    for(n in 1:length(GRef)){
      if (GRef[n] == file){
        GRef=GRef[-n]
      }
    }
  }
}

其中 GRef 是文件名列表。我收到上面列出的错误,但我不明白为什么。我看过这个post:Error .. missing value where TRUE/FALSE needed,但我认为这不是一回事。

您不应该在循环播放矢量时尝试修改它。问题是您正在删除您稍后尝试提取的项目,这会导致缺失值。最好先确定要删除的所有项目,然后再删除它们。例如

GRef <- c("a.file.dsw", "b.file.txt", "c.file.gif", "d.file.dsw")
exts <- sapply(strsplit(GRef, "[.]"), `[`, 3)
GRef <- GRef[exts!="dsw"]