我有一个包含数字的数据框。现在我想获得每行的N(N是整数> = 2)列的最大乘积。到目前为止我唯一的理想是使用复杂的循环。我怎么能快点做到?感谢您的帮助:)
> df <- data.frame(rep(4:6,time=2),rep(6:4,time=2),rep(6:8,2),rep(8:10,2))
> colnames(df) <- c(1,2,3,4)
>
# ideal result
df
1 2 3 4 maxproductof3
1 4 6 6 8 288
2 5 5 7 9 315
3 6 4 8 10 480
4 4 6 6 8 288
5 5 5 7 9 315
6 6 4 8 10 480
答案 0 :(得分:3)
我们可以使用apply
和sort
:
df$maxproductof3 <- apply(df, 1, function(x) prod(sort(x, decreasing = TRUE)[1:3]))
<强>结果:强>
1 2 3 4 maxproductof3
1 4 6 6 8 288
2 5 5 7 9 315
3 6 4 8 10 480
4 4 6 6 8 288
5 5 5 7 9 315
6 6 4 8 10 480
答案 1 :(得分:2)
您可以使用apply ...
执行此操作N <- 3
df$maxproductof3 = apply(df, 1, function(row) prod(sort(row, decreasing=T)[1:N]))
答案 2 :(得分:1)
以下是使用database.openHelper.readableDatabase.query("PRAGMA wal_checkpoint")
pmap