【发布时间】:2016-02-15 23:31:34
【问题描述】:
我是新的(约 1 天)R 用户。我正在尝试生成三掷六面骰子的所有 216 个结果。关键是然后对每个三元组应用一些功能(例如,最大面值)。这是我想出的:
mat <- matrix(numeric(0), ncol=3)
for (i in 1:6) {
for (j in 1:6) {
for (k in 1:6) {
mat <- rbind(mat, c(i, j, k))
}
}
}
# find maximum of each outcome
apply(mat, 1, max)
有没有更好更简洁的方法来使用 R 来做到这一点?
我本来希望这样使用outer:
outer(1:6, outer(1:6, 1:6, max), max)
但它失败并出现错误
外部错误(1:6, 1:6, max): dims [product 36] 与对象 [1] 的长度不匹配
【问题讨论】:
-
outer()具有三个参数/参数。你外面的outer()只有两个。对于函数参数,不要强制转换为字符,max不是"max"。 (某些具有函数参数的函数也可以容忍字符串,但不是全部) -
@jogo,抱歉,丢失的 1:6 是一个错字。但它仍然不起作用:
outer(outer(1:6, 1:6, max), 1:6, max)抛出相同的错误 -
@Aky 你测试过下面发布的解决方案吗?
-
请更正您对问题中参数的错字。
标签: r