Как вернуть data.frame с заданным именем из функции? - PullRequest
6 голосов
/ 28 октября 2010

Предположим, у меня есть функция, которая читает данные из таблицы MySQL, манипулирует ими и возвращает некоторые данные. Обратите внимание, что эта функция является лишь примером, функциональность которого сама по себе не имеет значения ..., например:

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(...)

Я получаю data.frame под названием mydf. Теперь я хотел бы сделать это для символьного вектора имен таблиц SQL И присвоить имена возвращаемым фреймам данных соответственно. Если я просто использую

x=lapply(MySQLtablenames,addRowSd,con)

Я получу список с именем x. Конечно, я мог бы удалить и переименовать все так, как хотел бы, но мой вопрос:

Как я могу заставить lapply (или другую сопоставимую функцию) возвращать несколько отдельных фреймов данных или хотя бы список, который содержит некоторые имена, полученные из моего вектора символов "MySQLtablenames"?

Ответы [ 2 ]

10 голосов
/ 28 октября 2010

только что нашел ответ самостоятельно:

assign("somename",dframe,envir = .GlobalEnv)
1 голос
/ 28 октября 2010

Если вы предоставите вектор символов символов sapply, он будет называть элементы в возвращаемом списке указанным вектором символов (по умолчанию USE.NAMES установлен в TRUE) ... Я также использовал бы упрощение = FALSE в зависимости от data.frames.вернувшись, вы можете получить непредсказуемые результаты

x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)
...