Ich versuche, die gleiche Anzahl von Zeilen aus mehreren (28) Datenrahmen, jeder von unterschiedlicher Länge zu entfernen. Hier ist ein Spielzeug-Datensatz zu veranschaulichen, was ich meine:Entfernen/Bearbeiten von Zeilen aus mehreren Datenrahmen
df1 <- data.frame(
var1 = c(1,2,3,4,5),
var2 = c(2,4,6,8,10)
)
df2 <- data.frame(
var3 = c(1,2,3,4,5,6,7),
var4 = c(2,4,6,8,10,12,14)
)
df3 <- data.frame(
var5 = c(1,2,3,4,5,6,7,8,9,10),
var6 = c(2,4,6,8,10,12,14,16,18,20)
)
ich eine Funktion geschrieben haben (siehe unten), dies zu tun, die sich auf einzelne Datenrahmen funktioniert:
remove_rows <- function(x){
x[c(3:nrow(x)),]
}
Ich habe dann eine Liste erstellt der Datenrahmen mit df_list <- ls()
und versuchte, die Funktion über jedes Element in der Liste mit lapply(df_list, function(x) remove_rows(x))
ausführen, aber ich bekomme immer wieder diesen Fehler: Error in 3:nrow(x) : argument of length 0
.
Ich denke es ist, weil meine Funktion versucht, auf das Element innerhalb meiner Liste zu handeln, im Gegensatz zu dem Datenrahmen, den der Name des Elements in meiner Liste darstellt, aber ich kann nicht herausfinden, wie Sie es ändern.
Ich habe auch versucht, die Hacky-Ansatz einer for
Schleife (unten), die auch versagt.
for (i in 1:length(df_list)){
name <- df_list[i]
assign(name, remove_rows(df_list[i]))
}
Danke, aber weil meine Datenframes alle unterschiedliche Namen haben (zB nicht nur df1, df2, df3, etc.)/Es gibt eine Menge von ihnen, ich kann nicht manuell eine Liste wie 'list (df1, df2, df3)' erstellen . – cstaff91
Tatsächlich löste es mit [dieser Antwort] (http://stackoverflow.com/questions/14954399/put-multiple-data-frames-into-list-smart-way) – cstaff91