Когда я запускаю следующий код в моем наборе данных, я получаю вывод (показан частичный), например:
all_countries_ts[,grepl("Muslims", colnames(all_countries_ts))]
Senegal Muslims Serbia Muslims Seychelles Muslims
1970-01-01 3693807 200000 170
2000-01-01 8936283 529322 730
2010-01-01 11713126 527598 821
2015-01-01 13621382 471414 844
Однако, когда я пытаюсь использовать функцию apply.yearly для него, чтобы сложитьчерез несколько лет я просто получаю результат NA:
apply.yearly(all_countries_ts[,grepl("Muslims", colnames(all_countries_ts))], FUN = sum)
1970-01-01 NA
2000-01-01 NA
2010-01-01 NA
2015-01-01 NA
Самое смешное, что он работает с одними входами, но не с другими.Например, если я использую ввод «Агностика» вместо «Мусульмане», я получаю хороший результат.Там нет ошибки, поэтому я не могу понять, что именно здесь происходит.
all_countries_ts хранится как объект xts.Следует отметить, что apply.yearly () всегда работает с подмножеством этого набора данных.Я написал функцию, и вы можете увидеть ее ниже:
sum_by_category <- function(religious_group, dataset) {
apply.yearly(dataset[,grepl(paste(religious_group), colnames(dataset))], FUN =
sum)
}
country_search <- function(country_name, z){
z <- foreach(i = 1:length(country_name), .combine = merge.xts) %do%{
all_countries_ts[,grepl(country_name[i], colnames(all_countries_ts))]
}
return(z)}
Когда я набираю следующее, оно отлично работает:
sum_by_category("Muslims", country_search("Senegal"))
Senegal Muslims
1970-01-01 3693807
2000-01-01 8936283
2010-01-01 11713126
2015-01-01 13621382
Я действительно не могу понять, что происходиттак как он работает с некоторыми входами, а не с другими.Заранее благодарим за любую помощь / понимание!