В отличие от браузера, где переменные по умолчанию назначаются глобальному пространству (то есть окну), переменные узла привязаны к модулю (файлу) , если вы явно не назначили их module.exports .
На самом деле, когда вы запускаете node myfile.js
или require('somefile.js')
, код в вашем файле завернут следующим образом:
(function (exports, require, module, __filename, __dirname) {
// your code is here
});
С основанием R
apply(df, 2, prod)
<час> С dplyr
library(dplyr)
df %>%
summarise_all(prod)
Вот быстрое решение с использованием функции apply()
в базовом пакете.
# generating a sample df
df <- as.data.frame(matrix(runif(20),nrow=4))
# using apply function to calculate the product of each column
# returns a vector
# prod = product of numbers
# margin = 2 applies it on each column
prodcol <- apply(df,FUN=prod,MARGIN=2)
С помощью tidyverse
вы можете сделать:
df %>%
mutate_all(funs(cumprod(.)))
col_1 col_2 col_3
1 6.751475e-04 1.346051e-03 6.971176e-04
2 9.836205e-07 2.186721e-07 2.535511e-07
3 1.188370e-09 1.979208e-10 1.613849e-10
4 1.013463e-12 1.607656e-13 5.380640e-14
5 1.620561e-15 5.223418e-17 3.424770e-17
6 1.382043e-18 4.242838e-20 1.141832e-20
cumprod()
выполняет кумулятивное умножение.
Или, если вы хотите только последний ряд:
df %>%
summarise_all(funs(last(cumprod(.))))
col_1 col_2 col_3
1 1.382043e-18 4.242838e-20 1.141832e-20
Вы можете использовать cumprod:
df <- data.frame(a = c(1, 2, 3), b = c(4, 5, 6))
Это создаст этот фрейм данных:
a b
1 4
2 5
3 6
cumprod(df)
Это выдаст:
a b
1 4
2 20
6 120
Далее, вы можете взять последняя строка для получения окончательного результата:
cumprod(df)[nrow(df), ]
И вы просто получите
a b
6 120