我正在尝试删除列表中包含标记" .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是文件名列表。我得到上面列出的错误,但我不明白为什么。我看过这篇文章:Error .. missing value where TRUE/FALSE needed,但我认为这不是一回事。
答案 0 :(得分:0)
在循环播放时,您不应尝试修改矢量。问题是您正在删除之后尝试提取的项目,这会导致缺失值。最好先识别要删除的所有项目,然后将其删除。例如
GRef <- c("a.file.dsw", "b.file.txt", "c.file.gif", "d.file.dsw")
exts <- sapply(strsplit(GRef, "[.]"), `[`, 3)
GRef <- GRef[exts!="dsw"]