expeRts
Я создал функцию, которая подсчитывает количество строк, удовлетворяющих некоторым условиям.Я сделал эту функцию, потому что одно из условий должно принимать разные метки, которые есть у меня в векторе - я не использовал фильтр, так как мне пришлось бы изменить одно из условий в фильтре и снова и снова возвращаться к исходному фрейму данных,Моя функция:
counting <- function(df, na.rm = TRUE, ...) {
for (i in seq_along(counties)) {
observations<-
nrow(subset(financial_environment,
financial_environment$county==counties[i]
& population> 500000))
print(observations) }
}
counting(financial_environment)
Проблема в том, как сохранить выходы консоли в векторе (внутри которого есть цикл for). Мне бы хотелось, чтобы этот вектор создавал фрейм данных с предыдущими векторами в моем коде.
Я читал другие вопросы о стековом потоке, но функции выглядят немного базовыми по сравнению с тем, который я сделал,В этих ответах рекомендуется следующее:
Создать вектор, в котором будут сохранены результаты.results <- vector("numeric", 650L)
Затем просто измените строку функции:
counting <- function(df, na.rm = TRUE, ...) {
for (i in seq_along(counties)) {
observations<-
nrow(subset(financial_environment,
financial_environment$county==counties[i]
& population> 500000))
print(observations)}
Затем я просто применил бы функцию к фрейму данных и увидел бы вектор «результатов»
counting(financial_environment)
results
делая это, вектор «результатов» имеет только ноль внутри.
Я пробовал также с sapply
, но консоль показала 1000 наблюдений.Я заметил, что результаты были повторены, т. Е. Последние 450 результатов были первыми 450 выходами при применении функции.
Буду очень признателен за ваши комментарии и предложения.