Так как у вас есть тиббл, и неизвестно, какой столбец имеет какой тип, я создал это:
isWordInTibble <- function(word, tibble) {
# case insensitive
any(unlist(
sapply(1:ncol(tibble),
function(i) tolower(word) %in% tolower(as.character(unlist(tibble[, i]))))))
}
Он смотрит, находится ли слово в каком-либо из векторов столбцов - просматривает все столбцы.
Замените аргумент файла в вашей команде write.csv
на:
file = gsub(".xls",
paste0(substr(temp[2, 1],
1,
5), # just first 5 letters
gsub("sheet", "", sheet),
substr(tolower(as.character(isWordInTibble("vivax", tmp))),
1,
1), # just first letter ("t" or "f")
".csv"),
excelsheet)
Тогда это может сработать!
Я попытался сократить имена, используя substr(, start, end)
иgsub()
.
Приложение
Поскольку вы спросили, как печатать, то только файлы, содержащие слово, но не те, которые его не содержат:
В вашем примере вместо команды write.csv()
замените ее на:
if (isWordInTibble("vivax", tmP)) {
write.csv(temp,
file = gsub(".xls",
paste0(substr(temp[2, 1],
1,
5), # just first 5 letters
gsub("sheet", "", sheet),
substr(tolower(as.character(isWordInTibble("vivax", temp))),
1,
1), # just first letter ("t" or "f")
".csv"),
excelsheet))
}
Тогда она выводится на печать, только если isWordInTibble
возвращает TRUE
.