Эта команда работает, чтобы подмножить данные filelist
, чтобы удалить все файлы «jpg».использовать grepl() для соответствия нескольким шаблонам данных R
filetype.isnotjpg <- setdiff(filelist, subset(filelist, grepl("\\.jpg$", filelist)))
Таким образом, это берет строку «filelist», которая содержит имена файлов из каталога. Я хочу вернуть все файлы, которые не относятся к типам «jpg», «doc», «pdf», «xls» и т. Д. Я хочу иметь возможность указать столько типов, сколько хочу, чтобы фильтровать список.
В идеале что-то вроде
target.files <- setdiff(filelist, subset(filelist, grepl(
c("\\.jpg$", "\\.doc$", "\\.pdf$", "\\xls$"), filelist)
Этих рекурсивный алгоритм работает, чтобы сделать то, что я хочу:
a <- setdiff(files.list, subset(files.list, grepl("\\.tmp", files.list, ignore.case = TRUE)))
a <- setdiff(a, subset(a, grepl("\\.jpg", a, ignore.case = TRUE)))
a <- setdiff(a, subset(a, grepl("\\.pdf", a, ignore.case = TRUE)))
a <- setdiff(a, subset(a, grepl("\\.tif", a, ignore.case = TRUE)))
и т.д. Что-то вроде применять() может работать? Я новичок в R, извините.
Решение 42 работ:
target.files <- setdiff(
files.list,
subset(files.list,
grepl(
paste(
c("\\.jpg", "\\.doc", "\\.pdf",
"\\.xls", "\\.tif", "\\.docx", "\\.xlsx", "\\.jpeg"),
collapse="|") ,
files.list,
ignore.case = TRUE)))
Как насчет воспроизводимого примера –
У вас были неправильные опечатки «grepl», которые я исправил. –