Come restituire un data.frame con un determinato nome da una funzione?
Domanda
Supponiamo di avere una funzione che legge i dati da una tabella MySQL, li manipola e restituisce alcuni data.frame.Nota che la funzione è solo un esempio la cui funzionalità non ha importanza in sé..., ad esempio:
addRowSd <- function(table,con,pattern="^Variable") {
dframe <- dbReadTable(con,table)
cn <- colnames(dframe)
qs <- subset(x, x %in% grep(pattern, x, value=TRUE))
dframe$qsd <- sd(t(dframe[,c(qs)]))
return(dframe)
}
mydf$sd <- addRowSd(...)
Alla fine mi ritrovo con un data.frame chiamato mydf.Ora mi piacerebbe fare questo su un vettore di caratteri di nomi di tabelle SQL E nominare i frame di dati restituiti di conseguenza.Se solo uso
x=lapply(MySQLtablenames,addRowSd,con)
Otterrò una lista chiamata x.Ovviamente potrei deselezionare e rinominare tutto come vorrei, ma la mia domanda è:
Come posso fare in modo che lapply (o un'altra funzione comparabile) restituisca più frame di dati singoli o almeno un elenco che contenga alcuni nomi derivati dal mio vettore di caratteri "MySQLtablenames"?
Soluzione
ho appena trovato una risposta da solo:
assign("somename",dframe,envir = .GlobalEnv)
Altri suggerimenti
Se fornisci a sapply un vettore di caratteri, nominerà gli elementi nell'elenco restituito in base al vettore di caratteri fornito (USE.NAMES predefinito su TRUE)...Vorrei anche utilizzare semplifica=FALSE poiché, a seconda dei data.frames restituiti, potresti ottenere risultati imprevedibili
x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)