错误:缺失值的真/假
问题描述:
我想删除标签为“.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,但我不认为这是一回事。
答
在循环播放时,您不应尝试修改矢量。问题是你正在删除你然后试图提取的项目,这是导致缺失的值。最好确定要先移除的所有项目,然后移除它们。例如
GRef <- c("a.file.dsw", "b.file.txt", "c.file.gif", "d.file.dsw")
exts <- sapply(strsplit(GRef, "[.]"), `[`, 3)
GRef <- GRef[exts!="dsw"]
请提供更多详细信息:显示'GRef'中的内容示例。 – Abdou
你probaby在第一个外部if语句中有一个NA。在'if'打印等号的左边之前放一个'print'调用。 – Adam
这可能是一个文件的结果,它只有一个'.',这意味着索引它在3会超出界限 – Adam