【发布时间】:2018-11-02 20:24:04
【问题描述】:
当我在我的数据集上运行以下代码时,我会得到如下输出(显示部分输出):
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
有趣的是,它适用于某些输入,但不适用于其他输入。例如,如果我使用输入“Agnostics”而不是“Muslims”,我会得到一个很好的结果。没有错误,所以我似乎无法弄清楚这里到底发生了什么。
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
我真的不知道发生了什么,因为它适用于某些输入,而不适用于其他输入。提前感谢您提供任何帮助/见解!
【问题讨论】:
-
我们如何重现这个问题?通过复制粘贴
dput(...)共享您的数据是一个开始
标签: r function data-structures subset xts