Я создаю функцию, которая использует filter (), и я заметил странное поведение, и поэтому я хотел бы, чтобы кто-то более опытный мог объяснить мне причину этого поведения.Это длинный вопрос, но его можно обобщить следующим образом: В чем разница между:
df <- filter (df, State == NameState) и df <- filter (df, State% in% NameState) </p>
Спасибо за вашу помощь !!!
Это мой код
best <- function(NameState , outcomeName ) { #two inputs: name of the state and outcome
df <- read.csv('outcome-of-care-measures.csv') #Read the csv file
df <- select(df, c(State, outcomeName )) # Select from df the columns State
# and from outcomeName
df <- filter(df , State == NameState) # I want it to filter for NameState
}
В последней строке все стало странно.Когда я вызываю функцию с
head(best('AL' , 'Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack' ))
, мой вывод таков: (что нормально)
head (лучше всего ('AL', 'Hospital.30.Day.Death)..Mortality..Rates.from.Heart.Attack '))
State Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack
1 AL 14.3
2 AL 18.5
3 AL 18.1
4 AL Not Available
5 AL Not Available
6 AL Not Available
Но если я попытаюсь отфильтровать 2 состояния с помощью:
head(best(c('AL', 'AZ') , 'Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack' ))
По какой-то причинекаждая вторая строка пропускается (как вы можете видеть из выходных данных)
head(best(c('AL', 'AZ') , 'Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack' ))
State Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack
1 AL 14.3
2 AL 18.1
3 AL Not Available
4 AL 17.7
5 AL 15.9
6 AL 19.6
И по какой-то причине, если я заменю последнюю строку кода в моей функции на эту, то каждая работает отлично
df <- filter(df , State %in% NameState )