道歉,我刚刚意识到这已经在这里得到了解答.
这应该是非常基本的,但我真的不明白它为什么会发生.有人可以帮忙吗?这是带有示例'data'的简单代码:
applyDirichletPrior <- function (row_vector) {
row_vector_added <- row_vector + min (row_vector)
row_vector_result <- row_vector_added / sum(row_vector_added)
}
data <- matrix(c(1,2,3,4,5,6,7,8), nrow=2, ncol=4)
applied <- apply(data, 1, function(x) applyDirichletPrior(x))
Run Code Online (Sandbox Code Playgroud)
输出如下:
> applied
[,1] [,2]
[1,] 0.1 0.1428571
[2,] 0.2 0.2142857
[3,] 0.3 0.2857143
[4,] 0.4 0.3571429
Run Code Online (Sandbox Code Playgroud)
而我希望输出的格式与输入数据相同,例如:
> applied
[,1] [,2] [,3] [,4]
[1,] 0.1000000 0.2000000 0.3000000 0.4000000
[2,] 0.1428571 0.2142857 0.2857143 0.3571429
Run Code Online (Sandbox Code Playgroud)
为什么以及在什么阶段进行apply转置?
将各个应用步骤的结果组合起来有点武断.你的期望在什么基础上有所不同?您看到的行为是文档描述它的方式:
如果每次调用'FUN'都返回一个长度为'n'的向量,那么'apply'将返回一个维度为'c(n,dim(X)[MARGIN])'的数组,如果'n> 1'.
请注意,您可以在以后轻松执行转置:
> t(applied)
[,1] [,2] [,3] [,4]
[1,] 0.1000000 0.2000000 0.3000000 0.4000000
[2,] 0.1428571 0.2142857 0.2857143 0.3571429
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |