Я обычно получаю наборы данных из базы данных, в которой тестовые профили создаются с фамилией «Поддельный». Я решил написать функцию для извлечения строк, содержащих эти тестовые примеры (Поддельные случаи)
Ниже приводится пример типа данных, которые я получаю. Давайте назовем этот фрейм данных names
FirstName<-c("Alan","James","Miles","Nath")
LastName<-c("Bottom","Bogus","Davis","Gun")
names<-data.frame(FirstName,LastName)
FirstName LastName
Alan Bottom
James Bogus
Miles Davis
Nath Gun
Я создал функцию с именем bogusfun
следующим образом
bogusfun<-function(df){
if(any(grepl("Bogus",df))) # This is to see which column contains "Bogus" profiles
col<-(colnames(df[grepl("Bogus",df)])) # This line assigns the column name containing the Bogus profile
col<-as.name(col)
library(dplyr)
df<-df%>%
filter(col!="Bogus")
return(df)
}
Когда я запускаю эту функцию в кадре данных
bogusfun(names)
Я ожидал увидеть
FirstName LastName
Alan Bottom
Miles Davis
Nath Gun
Однако это работает не так, как ожидалось. Итак, я посмотрел на следующий раздел кода
if(any(grepl("Bogus",names)))
col<-colnames(names[grepl("Bogus",names)])
col<-as.name(col)
df<-df%>%
filter(col="Bogus")
, и он дает мне ошибку Ошибка в UseMethod("filter_") :
no applicable method for 'filter_' applied to an object of class "function"