2017-10-20 6 views
0

Ich versuche eine Anzahl von Variablen/Werten zu erzeugen, jede mit einem sehr einzigartigen Datensatz (der von einem externen R-Programm aufgerufen wird), was leider nicht möglich ist in einer Tabelle oder Liste enthalten. Wie kann ich eine Liste von Dateinamen durchlaufen, um jede dieser Dateien zu benennen?Benenne eine Variable aus einer Liste in R (keine Liste oder Datenrahmen möglich)

Ich bin schon durch eine for-Schleife Indizierung Iterieren von 1: 3 (in diesem Beispiel), und ich habe eine Liste von Dateien in einem data.frame:

filenames <- [file_name_1, file_name_2, file_name_33] 

for(i in 1:nrow(filenames)){ 

#How do I name these files without typing in 1,2, and 33 manually? 
#Again they cannot be saved as a list or dataframe? 
file_name_1 <- Exterior_complex_function(i) 
file_name_2 <- Exterior_complex_function(i) 
file_name_33 <- Exterior_complex_function(i) 
} 

Ich wünschte, ich könnte als dies spare eine Liste, es wäre viel einfacher!

Informationen alles, dann ist dies der Fehler ich erhalte, wenn ich versuche, eine Liste zu verwenden:

object of type 'S4' is not subsettable 
+0

'sapply (Dateinamen, Exterior_complex_function, simplify = FALSE)'? – r2evans

Antwort

0

sapply lapply/wird hilfreich sein.

lapply(filenames, Exterior_complex_function) 

wenn Sie die Indizes dann übergeben möchten Sie mit diesem

lapply(seq(filenames), Exterior_complex_function) 

https://stat.ethz.ch/R-manual/R-devel/library/base/html/lapply.html

+0

Ich bin mir nicht sicher, ob das funktioniert - da ich die for-Schleife mit dem "i" -Index durch einen vorhandenen Datenrahmen durchlaufen muss, um bestimmte Werte zu ziehen. Ich hatte gehofft, ich könnte die Namensgebung entweder in die for-Schleife einbetten oder die Variablennamen außerhalb der Schleife erzeugen und sie dann aufrufen, wenn ich den Index erhöhe? – rleenay

0

wahrsten Sinne des Wortes die einzige Änderung, die Sie für Loops machen müssen, um halten die Liste auf Index und nicht über eine Sequenz:

filenames <- list("a", "b", "c") 
for (file in filenames) print(file) 
#> [1] "a" 
#> [1] "b" 
#> [1] "c" 

Sie könnten auch Funktionen aus der *apply Familie nützlich finden, wie andere vorgeschlagen.

+0

Aber wenn ich 'drucke (Datei)' kann ich meine Funktion dieser Datei nicht zuweisen? Das ist, wo meine Verwirrung kommt in – rleenay

+0

Wo ich 'print (file)' geschrieben habe, können Sie einen beliebigen Ausdruck ersetzen, einschließlich Ihrer 'Exterior_complex_function'. Ihr Code würde nur aussehen wie 'for (Datei in Dateinamen) Exterior_complex_function (file)' –

+0

Aber in diesem Fall würde ich nicht die Datei aufrufen, um die 'exterior_complex_function' auszuführen - ich versuche, in diese Datei zu schreiben. Das ist an dieser Stelle verwirrend für mich? – rleenay

0
filenames <- c("file_name_1", "file_name_2", "file_name_33") 
tmp_list <- list() 

for(i in 1:nrow(filenames)){ 
    tmp_list[filenames[i]] <- Exterior_complex_function(i) 
} 

Vielleicht würde es funktionieren.

Verwandte Themen