Menu
Coddy logo textTech

列と行

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

df$col と df[["col"]] は列をプレーンベクトルとして返すため、すべてのベクトル関数を適用できます。[[ ]] には、変数に格納された列名を指定できます。

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people$age)
print(mean(people$age))
col <- "city"
print(people[[col]])

出力:

[1] 36 22 41
[1] 33
[1] "london" "paris"  "rome"  

角括弧は行列のように [row, column] を受け取ります。空の側はすべてを選択し、列は名前で選択できます。

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people[2, ])
print(people[, c("name", "city")])

出力:

  name age  city
2   bo  22 paris
  name   city
1  ada london
2   bo  paris
3   cy   rome

1つのセルは df[row, column] であり、そこに代入すると値が変更されます。列全体への代入も同じように機能します。

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people[3, "age"])
people[3, "age"] <- 42
people$city <- toupper(people$city)
print(people)

出力:

[1] 41
  name age   city
1  ada  36 LONDON
2   bo  22  PARIS
3   cy  42   ROME

行を1つずつ確認するには、seq_len(nrow(df)) をループ処理し、df[i, "col"] または df$col[i] で各セルを読み取ります。

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
for (i in seq_len(nrow(people))) {
  cat(people$name[i], "lives in", people[i, "city"], "\n")
}

出力:

ada lives in london 
bo lives in paris 
cy lives in rome 
challenge icon

チャレンジ

簡単

person_card(df, i)を完成させてください。行 i について、列ごとに1行ずつ、列名とその行の値を name: bo の形式で、列の順序どおりに返してください。

提供されたコードは、read.csv(text = input)を使用して入力から表を読み込みます。最初の行には列名が含まれ、その後の各行が1つの行となっており、値はコンマで区切られています。入力の最後の行には i が含まれ、コードは返された各行を出力します。

自分で試してみよう

person_card <- function(df, i) {
  # ここにコードを書いてください
  character(0)
}

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

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

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

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