2016-12-03 4 views
1

Ich versuche, ein bestehenden Blätter in Objekt wb (Formal Klasse Arbeitsmappe XLConnect) mit Datenrahmen von meinem Global Environmentmit Objekten von Global Environment Arbeiten in Schleifen (R)

ich eine Liste von Namen zu füllen meiner Datenrahmen - dataframe_list, und eine Liste der Blattnamen - sheetsname sind beide Zeichenvektoren

I eine Schleife erstellt habe entsprechende Blätter in wb zu füllen, wenn der Name von meinem dataframe_list und der Name des Blattes sheetsname in wb gleich ist

Mein Problem ist, wenn ich eine Schleife, insbesondere data=dataframe_list[k], Schleife einen Namen, aber nicht den Datenrahmen mit dem entsprechenden Namen verwendet.

Hoffnung für Sie helfen

for(k in 1:length(dataframe_list)) { 
for(i in 1:length(sheetsname)) { 

if (dataframe_list[k]==sheetsname[i]) { 
     writeWorksheet(wb,data=dataframe_list[k],sheet=as.character(dataframe_list[k]),startRow = 49, 
         startCol = 3, header = FALSE) 

}} 
} 
+1

Blick in '? Get' – dww

+0

@alistaire Ich denke nach OP, dass es ein Vektor von data.frame Namen ist, nicht eine Liste von Datenrahmen. – dww

+0

'bekommen' ist gut, danke –

Antwort

2

Um den tatsächlichen Datenrahmen aus seinem Namen zurückzukehren, und nicht nur der Name selbst, get verwenden. Wie in

writeWorksheet(wb, data = get(dataframe_list[k]), 
     sheet=as.character(dataframe_list[k]), startRow = 49, 
     startCol = 3, header = FALSE) 

Hinweis, nicht getestet, wie dieses Beispiel

0

XLConnect des writeWorksheet bereitgestellt kein vollständiges reproduzierbar war ist vektorisiert, so kann man wie so ein list von data.frame s und ein Vektor von Blattnamen zur Verfügung stellen:

# Collect data.frames in a list 
dfs <- lapply(dataframe_list, get) 

writeWorksheet(wb, data = dfs, sheet = sheetnames, ...) 

Keine Notwendigkeit für eine for-Schleife hier.

Verwandte Themen