Ich bin ein R noob! Ich versuche, einen Datenrahmen als Metadaten zu verwenden, um Spalten in einem anderen Datenrahmen zu erstellen. Ich benutze anwenden, aber die Spalten werden nicht erstellt. Ideen?In R Spalten aus einem anderen Datenrahmen hinzufügen
meta <- data.frame(colname = c("a","b","c"))
frm <- data.frame(z=c(1,2,3))
frm["y"] <- 1
colnames(frm)
apply(meta, 1, function(x) {
frm[x["colname"]] <- 1
})
colnames(frm) #hoping for a/b/c columns now
Welche Ausgänge:
> meta <- data.frame(colname = c("a","b","c"))
> frm <- data.frame(z=c(1,2,3))
> frm["y"] <- 1
> colnames(frm)
[1] "z" "y"
> apply(meta, 1, function(x) {
+ frm[x["colname"]] <- 1
+ })
[1] 1 1 1
> colnames(frm) #hoping for a/b/c columns now
[1] "z" "y"
UPDATE: fand die Antwort hier: how to access global/outer scope variable from R apply function?
Variablen benötigt außerhalb des Bereichs für den Zugriff von < < mit anwenden -
meta <- data.frame(colname = c("a","b","c"))
frm <- data.frame(z=c(1,2,3))
frm["y"] <- 1
colnames(frm)
apply(meta, 1, function(x) {
frm[x["colname"]] <<- 1 #DBL ARROW DID IT
})
colnames(frm) #hoping for a/b/c columns now
Dank @akrun. Ich habe es versucht, aber ich bekomme immer noch keine Spalten a/b/c. Wenn Sie das ausführen, sehen Sie Spalten a/b/c? – sisdog
@sisdog Das ist seltsam. Ich bekomme die Spalten a, b, c. Aktualisiert den Beitrag – akrun
Es war das Scoping in apply(), das war das Problem, denke ich. Danke nochmal für die Hilfe. – sisdog