Функция R: не может вызвать кадры данных из функции - PullRequest
0 голосов
/ 04 мая 2018

Я написал функцию, которая перебирает строковые фреймы данных. Он принимает первое строковое значение df, выполняет вычисления и переходит к другой строке.

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

value for ‘dtraw.id’ not found

Вот функция

test <- function(ids,dfs,columns){
  #dfs <- ls()[sapply(mget(ls(), .GlobalEnv), is.data.frame)]
  main_table<-merge(ids,mget(dfs[1])[[dfs[1]]],by='id',all.x=T)
  coln<-colnames(main_table) %in% columns
  main_table<-main_table[,coln]
  main_table[,dfs[1]]=rowSums(main_table[sapply(main_table,is.numeric)],na.rm = T)

  for(j in 2:length(dfs)){
    result<-as.data.frame(mget(dfs[j])[[dfs[j]]])
    coln<-colnames(result) %in% columns
    result<-result[,coln]
    result[,dfs[j]]<-rowSums(result[sapply( result,is.numeric)],na.rm = T)
    main_table<-merge(main_table,result[,c('id',dfs[j])],by='id',all.x=T)
  }
  saveRDS(main_table,'aggregates.rds')
  #return(main_table)
}

при вызове test (идентификаторы, dfs, столбцы) я получаю сообщение об ошибке.

Любая помощь, в чем может быть причина?

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете использовать функцию get (), чтобы передать ей имя фрейма данных в виде строки. В противном случае R понятия не имеет, что вы пытаетесь сделать.

df = data.frame('var1' = 1:100)

Здесь вы можете увидеть прогрессию того, что работает, а что нет:

summary(df)
summary('df')
summary(get('df'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...