这是一个直截了当的问题,但我在下面遗漏了一些东西。
我在R
中有一个非常大的文件路径(即字符串)向量vec = c("\dir\subdir\pathname1\file.txt", "\dir\subdir\pathname1\file.pdf",
..., "\dir\subdir\pathname9\file.jpg")
我的想法是为每个"类型"创建一个data.table
对象。例如,文件.txt
,.pdf
等。因此,我需要通过过滤上述内容来为每个文件扩展名提供R向量。
我搜索具有特定扩展名的字符串的方式是grepl()
:
grepl(".txt$", vec)
现在,如何使用grepl()创建一个新的向量?终点应该是
txt_paths <- # single vector only with txt files
pdf_paths <- # single vector only with pdf files
jpg_paths <- # single vector only with jpg files
etc.
答案 0 :(得分:1)
您可以使用grepl()生成的逻辑向量来索引vec。
txt_paths <- vec[grepl(".txt$", vec)]
答案 1 :(得分:0)
我们可以split
vector
成list
vector
个
lst <- split(vec, tools::file_ext(vec))
names(lst) <- paste0(names(lst), "_paths")
不建议在全局环境中使用单个对象,但如果我们更喜欢这种方式,请使用list2env
list2env(lst, envir = .GlobalEnv)
如果我们需要split
文件名,
lst2 <- split(vec, tools::file_path_sans_ext(basename(vec)))
vec <- c("\\dir\\subdir\\pathname1\\file.txt",
"\\dir\\subdir\\pathname1\\file.pdf",
"\\dir\\subdir\\pathname9\\file.jpg")