Ich habe einen Datenrahmen. Ich brauche für die Spalte „a“ suchen, und wenn „a“ gleich „foo“, Spalte „b“ gleich „gefunden“Fehler in Apply-Funktion: "Argumente implizieren unterschiedliche Anzahl von Zeilen: 1, 0"
a <- c("foo", "bar", "baz", "foo")
b <- c(0, 0, 0, 0)
df <- data.frame(a, b)
f <- function (x){
if (x["a"] == "foo"){
x["b"] <- "confirm"
}
}
result <- apply(df, 1, f)
Das beabsichtigte Ergebnis
a b
"foo" "confirm"
"bar" 0
"baz" 0
"foo" "confirm"
ist, aber wenn ich tun diese resultieren Erträge:
[[1]]
[1] "confirm"
[[2]]
NULL
[[3]]
NULL
[[4]]
[1] "confirm"
und View (Ergebnis) gibt den Fehler: Fehler anzeigen: Argumente implizieren unterschiedliche Anzahl der Zeilen: 1, 0
Fügt es dem Datenrahmen eine weitere Dimension hinzu?
Eine Funktion zur 'return (x)' am Ende benötigt. – Frank
Ich habe 'return (x)' hinzugefügt, aber im Ergebnis sind meine Zeilen und Spalten transponiert. –
Ja, das ist ein negativer Nebeneffekt von 'apply'. Leute normalerweise 't()' am Ende, um es umzukehren oder zu versuchen, 'apply' zu vermeiden. – Frank