2016-05-13 19 views
0

Ich habe eine Liste von Zeichenfolgen list = c("string_1", "string_2", ...) und, basierend auf diesem Vektor, ich weiß, gibt es Datenrahmen mit dem Namen df_string_1, df_string_2, ... in meiner Umgebung.Anwenden einer Funktion auf eine Variable von seinem String-Namen

Mein Code ist wie:

for (i in 1:length(list)){ 
    res = function(i) // dataframe depending on i, same ncol as df_string_i 
    rbind(df_list[i],res) // that's the line I don't know how to code 
} 

Ich kann nicht einen Weg finden, den Datenrahmen df_string_i bei jeder Iteration zu erhalten. Mein Versuch war, seinen Namen mit paste("df_",list[i],sep="") zu bekommen, aber was kann ich dann mit dieser Zeichenfolge tun, da ich die Variable in der rbind brauche?

Danke für Ihre Hilfe!

Antwort

0

Wenn Sie eine Situation mit dat.frames namens df_string_1, ..., df_string_n haben, wäre es auf lange Sicht besser, diese in einer Liste zu speichern und Tools wie lapply zu verwenden. Um das aktuelle Problem zu lösen, verwenden Sie get:

for (i in 1:length(list)){ 
    res = function(i) // dataframe depending on i, same ncol as df_string_i 
    rbind(get(paste0("df_",list[i])),res) 
} 
+0

Ah, Sie schlagen mich auf die Antwort um ein paar Sekunden. Ich lösche meine. Beachten Sie jedoch, dass die Datenframes als 'df_list_i' gespeichert sind, also müsste es' paste0 ('df_list _', i) 'sein. – shreyasgm

+0

get() funktioniert perfekt! Vielen Dank. Ja, mir sind alle Anwendungsfunktionen bekannt, aber es ist schwierig, sie zu verwenden, da ich über die Struktur der Daten verfüge. Danke auch shreyasgm :) – galzra

+0

Danke @shreyasgm. Ich denke, das OP hat das bearbeitet. Das letzte Update hat 'list = c (" string_1 "," string_2 ", ...)' und 'paste (" df _ ", list [i], sep =" ")' '. – lmo

Verwandte Themen