用R转置的结果

时间:2013-08-19 11:12:01

标签: r apply transpose

道歉,我刚才意识到这已经得到了解答here

这应该是非常基本的,但我真的不明白它为什么会发生。有人可以帮忙吗?这是带有示例'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))

输出为:

> applied
     [,1]      [,2]
[1,]  0.1 0.1428571
[2,]  0.2 0.2142857
[3,]  0.3 0.2857143
[4,]  0.4 0.3571429

我期望输出的格式与输入数据相同,如:

> applied
          [,1]      [,2]      [,3]      [,4]
[1,] 0.1000000 0.2000000 0.3000000 0.4000000
[2,] 0.1428571 0.2142857 0.2857143 0.3571429

apply 期间为什么以及在什么阶段发生转置?

1 个答案:

答案 0 :(得分:7)

组合各个应用步骤的结果有些武断。你的期望在什么基础上有所不同?您看到的行为是文档描述的行为:

  

如果每次调用'FUN'都会返回长度为'n'的向量,那么'apply'   如果'n&gt;返回维度'c(n,dim(X)[MARGIN])'的数组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