R:如何将每个值与行或列中的下一个值相乘?

时间:2013-11-19 12:30:49

标签: r multiplication

我当然可以使用一个循环,但鉴于我的大数据矩阵,这很可能会永远。我有一个尺寸为5000x250的数据矩阵。每个主题的5000个值大约为1.现在我想要乘以每列(j)的所有值,如下所示:

x[1,j]*x[2,j]*x[3,j]...*x[5000,j]

有人可以告诉我如何以计算有效的方式做到这一点吗?感谢。

3 个答案:

答案 0 :(得分:5)

您可以使用apply函数将其作为每行或每列中的prod:

data <- matrix(1:100, nrow = 10)
apply(data, 1, prod) #1 indicates rows, 2 indicates columns
##[1] 4.780159e+14 1.242689e+15 2.394833e+15 4.060163e+15 6.393839e+15
##[6] 9.585619e+15 1.386570e+16 1.951127e+16 2.685395e+16 3.628800e+16
 #You get a vector with the result of multiply each element of each row

答案 1 :(得分:3)

查看?prod

data <- matrix(1:100, nrow = 10)
data
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##  [1,]    1   11   21   31   41   51   61   71   81    91
##  [2,]    2   12   22   32   42   52   62   72   82    92
##  [3,]    3   13   23   33   43   53   63   73   83    93
##  [4,]    4   14   24   34   44   54   64   74   84    94
##  [5,]    5   15   25   35   45   55   65   75   85    95
##  [6,]    6   16   26   36   46   56   66   76   86    96
##  [7,]    7   17   27   37   47   57   67   77   87    97
##  [8,]    8   18   28   38   48   58   68   78   88    98
##  [9,]    9   19   29   39   49   59   69   79   89    99
## [10,]   10   20   30   40   50   60   70   80   90   100

prod(data[, 2])
## [1] 670442572800

答案 2 :(得分:0)

eval(parse(text=paste(x[,j], collapse="*")))