首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取标识符而不匹配文件夹中的文件

提取标识符而不匹配文件夹中的文件
EN

Stack Overflow用户
提问于 2018-06-15 10:19:56
回答 2查看 47关注 0票数 0

如何提取没有生成相应文件的标识符?

作为文件生成输入的标识符:

代码语言:javascript
复制
fileIden <- c('a-1','a-2','a-3','b-1','b-2','c-1','d-1','d-2','d-3','d-4')

检查生成的文件:

代码语言:javascript
复制
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")

如果所有进程都完全成功,则预期文件

代码语言:javascript
复制
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"

有任何预期的文件丢失了吗?

代码语言:javascript
复制
fileMiss <- fileExp[!fileExp %in% files]
# [1] "a-1.csv" "b-2.csv" "d-1.csv" "d-2.csv" "d-4.csv"

预期产出

代码语言:javascript
复制
# "a-1" "b-2" "d-1" "d-2" "d-4"

我确信,在不创建文件的情况下,直接获得上述输出有一个简单的过程:fileExpfileMiss。你能带我去那里吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-15 10:26:27

你可以这样做:

代码语言:javascript
复制
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)))

另一种方法:

代码语言:javascript
复制
setdiff(fileIden, stringr::str_extract(file,"(.*)(?=\\.csv)"))

逻辑

setdiff发现两个向量之间的差异,gsub用任何东西替换".csv“,我们将它们结合在一起来找出这些向量之间的区别。

输出:

代码语言:javascript
复制
#[1] "a-1" "b-2" "d-1" "d-2" "d-4"
票数 1
EN

Stack Overflow用户

发布于 2018-06-15 11:03:10

一种不那么优雅的方法

代码语言:javascript
复制
result <- ifelse(fileIden %in% substr(file, 1, 3), "", fileIden)
result[result != ""]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50873597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档