1) Используйте replace
и cbind
следующим образом:
replace(matrix(0, 10, 10), cbind(a, b), 1)
2) В вопросе a
равно 1:10 ив этом особом случае (но не в более общем смысле) другая возможность:
+ outer(b, 1:10, `==`)
или
+ sapply(1:10, `==`, b)
3) В вопросе a
равно 1:10 и b
- это премутация 1:10. В этом особом случае (но не в более общем смысле) это работает:
diag(10)[b, ]
4) В вопросе и a
, и b
являются премуациями 1:10, и в этомв особом случае (но не в более общем смысле) это работает, чтобы дать table
:
table(a, b)
Это также будет работать и аналогично:
xtabs(~ a + b)
Примечание
Обратите внимание, что в вопросе
- используется
seq(1:10)
, который должен быть просто 1:10
- , необходимо добавить
set.seed
, чтобы сделать воспроизводимый ввод - определяет
a
но потом не использует его в коде