2017-06-07 1 views
1

Ich habe einen Datensatz mit 30 Daten und ich hatte eine Schleife geschrieben, um alle von ihnen in die Umgebung zu lesen. (Das funktioniert gut).Erstellen neuer Variablen in mehreren Daten

Alle von ihnen haben die gleichen 6 Variablen und ich möchte eine Schleife schreiben, um eine neue Variable in allen von ihnen zu bekommen. Diese Variable sollte aus einer Subtraktion von zwei anderen Variablen bestehen. Beide sind numerisch. Das ist also mein Code.

list <- c("Data1", "Data2", "Data3", "Data4") 

for (i in list){ 

i[,7] <- i[,5] - i[,2] 

} 

Get this: 
Error in i[, 5] : incorrect number of dimensions 

R kann nicht die i als Variable in der Liste identifizieren. Aber ich weiß nicht warum, denn in der Schleife vorher (um alle Daten zum Enviroment zu lesen) funktioniert es perfekt! Ich versuche auch, i$Variable7 <- i$Variable5 - i$Variable2 zu schreiben, funktioniert aber auch nicht.

Antwort

0

Wir können die Datensätze in einem list, Schleife durch die list mit lapply, erhalten die 7. Spalte mit der Differenz der fünften und zweiten Spalten aktualisieren

lst <- lapply(mget(list), function(x) {x[,7] <- x[,5] - x[,2]; x}) 

Wenn wir die ursprünglichen Daten-Set-Objekte wirklich aktualisieren wollten,

list2env(lst, envir = .GlobalEnv) 

der Grund, warum der Code der OP nicht funktioniert hat, weil es durch den Strang wurde Looping und nicht g Einstellen der Werte des Datensatzobjekts

Verwandte Themen