Como retornar um Data.frame com um determinado nome de uma função?
Pergunta
Suponha que eu tenha uma função que leia dados de uma tabela MySQL, manipula -os e retorne alguns dados.frame. Observe que a função é apenas um exemplo cuja funcionalidade não importa ..., por exemplo:
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(...)
Acabei com um dados.Frame chamado MyDF. Agora eu gostaria de fazer com isso com um vetor de personagem dos nomes da tabela SQL e nomear os quadros de dados retornados correspondentemente. Se eu apenas usar
x=lapply(MySQLtablenames,addRowSd,con)
Vou receber uma lista chamada x. Claro que eu poderia iluminar e renomear tudo do jeito que gostaria, mas minha pergunta é:
Como posso fazer com que o Lapply (ou outra função comparável) retornem vários quadros de dados ou pelo menos uma lista que contém alguns nomes derivados do meu vetor de personagem "mySqltableNames"?
Solução
Acabei de encontrar uma resposta sozinha:
assign("somename",dframe,envir = .GlobalEnv)
Outras dicas
Se você fornecer um vetor de caractere, ele nomeará os itens na lista retornada pelo vetor de caractere fornecido (use.names padrão para true) ... Eu também usaria simplify = false como dependendo dos dados. Obtenha resultados imprevisíveis
x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)