У меня есть следующий вложенный список:
list(c("Oesophagus irregular z-line as previously.", " quad biopsies at ,,,m"
), c("Normal examination", "cardia mild inflammation."
), c("stomach normal", "Small polyp EMR and completely removed",
"Duodenum normal", "Jejunum normal", "GOJ normal",
"Nodule seen at the mid oesophagus normal", "This was removed by EMR",
"All other sites normal normal", " A small area of residual stomach was removed by APC "))
Я бы хотел найти в каждом элементе наличие любого термина, взятого из списка с именем EventList
:
EventList<-c("RFA","EMR","APC")
Если термин найден, то я хотел бы посмотреть, присутствует ли в том же предложении местоположение из списка локаций:
LocationList<-function(){
tofind <-paste(c("Stomach","Antrum","Duodenum","Oesophagus","GOJ"),collapse = "|")
return(tofind)
}
Если он не найден, я бы хотел посмотреть в предыдущем предложении, чтобы увидеть, можно ли увидеть местоположение.
До сих пор я мог смотреть только в одном предложении:
r1 <-lapply(text,function(x) Map(paste, str_extract_all(tolower(x),tolower(EventList)), str_extract_all(tolower(x),tolower(LocationList())), MoreArgs = list(sep=":")))
но это просто ищет наличие терминов в каждом предложении и ничего не выводит, если не присутствует. Как я могу преобразовать это, чтобы посмотреть в предыдущем предложении в списке? Примерно так:
ifelse(lapply(text,function(x) str_extract_all(tolower(x),tolower(LocationList())),str_extract_all(tolower(x),tolower(EventList()), lag element and do the same??
Предполагаемая мощность:
1 ""
2 ""
3 stomach:EMR,oesophagus:EMR,stomach:APC