我正在努力解決一個非常簡單的問題:
我想在回圈中運行 2 個索引組合: i=1,j=1, i=1,j=2,i=1,j=3..... 然后切換到 i=1,j=2 i=2,j=2 i=3,j=2... 依此類推,直到 i=n,j=n
我撰寫了以下代碼,但遺憾的是無法正常作業:
- 我不能使用 r 函式,例如 expand.grid 等。
a <- function(n) {
for (i in 1:n) {
for (j in 1:n) {
print(i,j)
}
}
}
#我希望得到 1,1 1,2 1,3 1,4... 2,1 2,2... 但這不是結果。
先感謝您,
uj5u.com熱心網友回復:
您的代碼確實有效!只用逗號列印只會列印第一個。
而是嘗試在字串中用逗號分隔:
a <- function(n) {
for (i in 1:n) {
for (j in 1:n) {
print(paste(i, j, sep=', '))
}
}
}
前任:
> a(3)
[1] "1, 1"
[1] "1, 2"
[1] "1, 3"
[1] "2, 1"
[1] "2, 2"
[1] "2, 3"
[1] "3, 1"
[1] "3, 2"
[1] "3, 3"
>
您的代碼僅列印左側的數字。
uj5u.com熱心網友回復:
寫你的函式的另一種方法是使用expand.grid過l的串列seq長度uences l。
f <- \(l) do.call(paste,
cbind(expand.grid(replicate(l - 1, seq.int(l), simplify=FALSE)),
sep=', '))
f(3)
# [1] "1, 1" "2, 1" "3, 1" "1, 2" "2, 2" "3, 2" "1, 3" "2, 3" "3, 3"
f(4)
# [1] "1, 1, 1" "2, 1, 1" "3, 1, 1" "4, 1, 1" "1, 2, 1" "2, 2, 1" "3, 2, 1"
# [8] "4, 2, 1" "1, 3, 1" "2, 3, 1" "3, 3, 1" "4, 3, 1" "1, 4, 1" "2, 4, 1"
# [15] "3, 4, 1" "4, 4, 1" "1, 1, 2" "2, 1, 2" "3, 1, 2" "4, 1, 2" "1, 2, 2"
# [22] "2, 2, 2" "3, 2, 2" "4, 2, 2" "1, 3, 2" "2, 3, 2" "3, 3, 2" "4, 3, 2"
# [29] "1, 4, 2" "2, 4, 2" "3, 4, 2" "4, 4, 2" "1, 1, 3" "2, 1, 3" "3, 1, 3"
# [36] "4, 1, 3" "1, 2, 3" "2, 2, 3" "3, 2, 3" "4, 2, 3" "1, 3, 3" "2, 3, 3"
# [43] "3, 3, 3" "4, 3, 3" "1, 4, 3" "2, 4, 3" "3, 4, 3" "4, 4, 3" "1, 1, 4"
# [50] "2, 1, 4" "3, 1, 4" "4, 1, 4" "1, 2, 4" "2, 2, 4" "3, 2, 4" "4, 2, 4"
# [57] "1, 3, 4" "2, 3, 4" "3, 3, 4" "4, 3, 4" "1, 4, 4" "2, 4, 4" "3, 4, 4"
# [64] "4, 4, 4"
注: "R version 4.1.2 (2021-11-01)"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/390457.html
上一篇:dplyr:為什么不使用summarise()總結案例?
下一篇:查找一列逗號分隔類別的組合
