Как вернуть данные.фрейм с заданным именем из функции?


Предположим, что у меня есть функция, которая считывает данные из таблицы 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(...)

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

x=lapply(MySQLtablenames,addRowSd,con)

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

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

2 5

2 ответа:

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

assign("somename",dframe,envir = .GlobalEnv)

Если вы предоставляете sapply символьный вектор, он будет называть элементы в возвращаемом списке указанным символьным вектором (USE.Имена по умолчанию имеют значение TRUE)... Я бы также использовал simplify=FALSE в зависимости от данных.возвращенные кадры вы можете получить непредсказуемые результаты

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