2015-01-29 4 views
0

Я хочу применить функцию к нескольким фреймам данных. На вопрос был дан ответ несколько раз на Stackoverflow, например. Apply a function to each data frame или applying a function for a list of dataframes. Однако у меня есть немного другая (новичка) проблема при создании списка фреймов данных, которые могут передавать данные в функцию.Создание «списка» данных, которые могут быть переданы функции

Я создал функцию

drawmyplot <- function(x){ 
variable <-x 
aggregate(variable$c1, by=list(variable$c2, variable$c3), FUN=sum) 
.... 
} 

я вызываю функцию с циклом

for (i in list_of_dataframes){ 
drawplot(i) 
} 

У меня есть список dataframes

list_of_dataframes<-list("df_1","df_2") 

Когда я запускаю сценарий, я получить сообщение об ошибке

Error in variable$c1 : $ operator is invalid for atomic vectors 

Насколько я понимаю, я создаю список с одним вектором, и я не передаю ни одну из моих данных в функцию. Как я могу применить функцию к каждому набору данных ряда данных df_1, df_2, df_3, .., df_n в этом сценарии?

ответ

2

Посмотрите, как у вас есть список строк:

list_of_dataframes<-list("df_1","df_2") 

Если вы хотите получить список из dataframes использовать

list_of_dataframes<-list(df_1,df_2) 
+0

ТНХ, это был ответственен за предупреждение. Я также пробовал ваше предложение раньше, и когда я запускаю скрипт, я не получаю ошибку, но ничего не происходит, когда функция работает. Когда я вызываю функцию непосредственно 'drawmyplot (df_1)', функция выполняет именно то, что она должна делать. у тебя есть идеи? – rmuc8

+0

Я бы поставил оператор print внутри функции drawmyplot, чтобы узнать, что происходит. Если вы вызываете свою функцию из цикла, вы должны увидеть, что она печатает одни и те же данные, когда вы вызывали каждый файл данных по отдельности. – kith

Смежные вопросы