如何提取没有生成相应文件的标识符?
作为文件生成输入的标识符:
fileIden <- c('a-1','a-2','a-3','b-1','b-2','c-1','d-1','d-2','d-3','d-4')检查生成的文件:
files <- list.files(".")
files
# [1] "a-2.csv" "a-3.csv" "b-1.csv" "c-1.csv" "d-3.csv"
# Generated here for reproducibility.
# files <- c("a-2.csv", "a-3.csv", "b-1.csv", "c-1.csv", "d-3.csv")如果所有进程都完全成功,则预期文件
fileExp <- paste(fileIden, ".csv", sep = "")
# [1] "a-1.csv" "a-2.csv" "a-3.csv" "b-1.csv" "b-2.csv" "c-1.csv" "d-1.csv" "d-2.csv" "d-3.csv" "d-4.csv"有任何预期的文件丢失了吗?
fileMiss <- fileExp[!fileExp %in% files]
# [1] "a-1.csv" "b-2.csv" "d-1.csv" "d-2.csv" "d-4.csv"预期产出
# "a-1" "b-2" "d-1" "d-2" "d-4"我确信,在不创建文件的情况下,直接获得上述输出有一个简单的过程:fileExp、fileMiss。你能带我去那里吗?
发布于 2018-06-15 10:26:27
你可以这样做:
fileIden <- c('a-1','a-2','a-3','b-1','b-2','c-1','d-1','d-2','d-3','d-4')
file <- c("a-2.csv", "a-3.csv" ,"b-1.csv", "c-1.csv", "d-3.csv")
setdiff(fileIden, trimws(gsub("\\.csv","", file)))另一种方法:
setdiff(fileIden, stringr::str_extract(file,"(.*)(?=\\.csv)"))逻辑
setdiff发现两个向量之间的差异,gsub用任何东西替换".csv“,我们将它们结合在一起来找出这些向量之间的区别。
输出:
#[1] "a-1" "b-2" "d-1" "d-2" "d-4"发布于 2018-06-15 11:03:10
一种不那么优雅的方法
result <- ifelse(fileIden %in% substr(file, 1, 3), "", fileIden)
result[result != ""]https://stackoverflow.com/questions/50873597
复制相似问题