Как вернуть данные.фрейм с заданным именем из функции?
Предположим, что у меня есть функция, которая считывает данные из таблицы 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 ответа:
Если вы предоставляете sapply символьный вектор, он будет называть элементы в возвращаемом списке указанным символьным вектором (USE.Имена по умолчанию имеют значение TRUE)... Я бы также использовал simplify=FALSE в зависимости от данных.возвращенные кадры вы можете получить непредсказуемые результаты
x=sapply(MySQLtablenames,addRowSd,con, simplify=FALSE)