我正在处理一个包含1,000个模拟的大型矩阵,其中包含近10万个事件。输出是比率。如果可以的话,我想避免使用循环,因为我不知道我的计算机是否能够处理它,所以我试图构建一个函数,它使用hist()将每个模拟的比率转换为计数,然后将这些计数转换为频率。我已经能够将函数内部的步骤应用到整个矩阵中,但在如何将这些步骤应用到每个模拟并生成结果作为输出方面遇到了困难。
function <- function(my_data) {
# Create intervals
intervals <- seq(0,1, by = .01)
# Create histogram
H <- hist(
my_data, plot = FALSE,
breaks = intervals,
right = FALSE,
na.rm = TRUE)
# Convert
out <- H$counts/dim(my_data)[1]
return(out)
}
percentile_freqs <- apply(x, MARGIN = 2, FUN = function)
#Error message (the same printed thousands of times)
#1: In hist.default(my_data, plot = FALSE, breaks = func_intervals, ... :
#argument ‘...’ is not made use of
class(percentile_freqs)
#[1] "numeric"
dim(percentile_freqs)
#NULL
1条答案
按热度按时间goqiplq21#
所以,我偶然发现了解决方案。正如用户Jean-Claude Arbaut评论的那样,我不能分配给一个关键字,尽管这个关键字不在我的原始代码中(对不起)。无论如何,我没有一个真实的的解释,但下面的代码似乎工作!
我只做了两个改动。首先,在#Convert阶段,将devisor从dim(my_data)[1]更改为(sum(H$counts))。还删除了hist()中的na.RM参数,尽管我确信这不是必要的。