2016-03-07 4 views
0

Странный вопрос, но как сделать фильтр, чтобы все строки возвращались для фрейма данных? Например, у вас есть следующие dataframe:Как фильтровать «любое значение» в R?

Pts <- floor(runif(20, 0, 4)) 
Name <- c(rep("Adam",5), rep("Ben",5), rep("Charlie",5), rep("Daisy",5)) 

df <- data.frame(Pts, Name) 

И говорят, что вы хотите настроить заранее определенный фильтр для этого dataframe, например:

Ptsfilter <- c("2", "1") 

Что вы будете затем запустить через dataframe, , чтобы получить новый фильтруется dataframe

dffil <- df[df$Pts %in% Ptsfilter, ] 

иногда, однако, вы не хотите, чтобы dataframe быть отфильтрованы на всех, и в интересах автоматизации и минимизации нагрузки, вы не хотят вернуться и удалить/прокомментировать каждый экземпляр этого фильтра. Вы просто хотите настроить значение Ptsfilter таким образом, чтобы никакие строки не отфильтровывались из фрейма данных, когда эта строка кода запускается.

Я экспериментировал/догадки с такими вещами как:

Ptsfilter <- c("") 
Ptsfilter <- c(" ") 
Ptsfilter <- c() 

без толка.

Есть ли значение, которое я могу ввести для Ptsfilter, который достигнет этой цели?

+2

Я думаю, вы хотите использовать '% in%' вместо '=='. Вы имели в виду 'if (any (df $ Pts% in% Ptsfilter)) df' – akrun

+0

' Ptsfilter <- unique (df $ Pts) '? – scoa

+0

yes @akrun моя ошибка –

ответ

0

Возможно, вам потребуется определить функцию, которая сделает это за вас.

filterDF = function(df,filter){ 
    if(length(filter)>0){ 
     return(df[df$Pts %in% filter, ]) 
    } 
    else{ 
     return(df) 
    } 
    } 
+0

Я думаю, что это может быть путь, спасибо. Я отчитаю. –

Смежные вопросы