Menu
Coddy logo textTech

Spalten und Zeilen

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 43 von 64.

df$col und df[["col"]] geben eine Spalte als einfachen Vektor zurück, sodass jede Vektorfunktion darauf angewendet werden kann. [[ ]] akzeptiert einen in einer Variable gespeicherten Spaltennamen:

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]])

Ausgabe:

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

Eckige Klammern verwenden [row, column], wie bei einer Matrix. Eine leere Seite wählt alles aus, und Spalten können nach Namen ausgewählt werden:

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")])

Ausgabe:

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

Eine Zelle ist df[row, column], und eine Zuweisung an sie ändert den Wert. Die Zuweisung an eine ganze Spalte funktioniert genauso:

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)

Ausgabe:

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

Um die Zeilen eine nach der anderen durchzugehen, iteriere über seq_len(nrow(df)) und lies jede Zelle mit df[i, "col"] oder df$col[i] aus:

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")
}

Ausgabe:

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

Aufgabe

Einfach

Vervollständige person_card(df, i). Gib für jede Spalte der Zeile i eine Zeile im Format name: bo zurück, mit dem Spaltennamen und dem Wert in dieser Zeile, in der Reihenfolge der Spalten.

Der bereitgestellte Code liest die Tabelle mit read.csv(text = input) aus der Eingabe: Die erste Zeile enthält die Spaltennamen und jede folgende Zeile ist eine Zeile mit durch Kommas getrennten Werten. Die letzte Eingabezeile enthält i, und der Code gibt jede zurückgegebene Zeile aus.

Probier es selbst

person_card <- function(df, i) {
  # Schreibe deinen Code hier
  character(0)
}

# Bereitgestellter Ein-/Ausgabecode: belasse ihn wie er ist
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik und Ablaufsteuerung

Übe selbstständig: Online-R-Compiler