Menu
Coddy logo textTech

ベクトルの並べ替え

CoddyのRジャーニー「ロジックとフロー」セクションの一部。レッスン 37/64。

sort(x)はxの値を昇順で返し、decreasing = TRUEにすると降順になります。元のベクトルは変更されません:

scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)

出力:

[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88

テキストはアルファベット順に並べ替えられます。正確な順序はシステムの言語設定によって異なります。Coddyでは、多くのサーバーと同様に、大文字が小文字より先に来るため、"Zed"は"ada"より前に並べ替えられます。大文字と小文字を区別しない場合は、tolower()で変換します:

names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))

出力:

[1] "Zed" "ada" "cy" 
[1] "ada" "cy"  "zed"

rev(x) はソートせずに現在の順序を逆にし、head(x, n) は最初の n 個の要素を保持します。これらを sort() と組み合わせると、上位リストを作成できます。

scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))

出力:

[1] 88 60 95 72
[1] 95 88

ソートされた名前付きベクトルでは、それぞれの名前が値とともに保持されるため、名前は値の順序で並びます:

stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])

出力:

[1] "jam" "oil" "tea"
[1] 3
challenge icon

チャレンジ

簡単

top_scores(scores, n)を完成させてください。n個の最高得点を高い順に返し、, で連結します。得点がn個未満の場合は、すべて返してください。

提供されたコードは、得点をカンマ区切りの1行とnとして読み取り、返された値を出力します。

自分で試してみよう

top_scores <- function(scores, n) {
  # ここにコードを書いてください
  ""
}

# 提供された入出力コード:そのままにしておいてください
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), sep = "\n")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ