Как запустить функции внутри другой функции в R? - PullRequest
0 голосов
/ 02 июля 2018

Ранее я видел вопрос, похожий на этот, но не до конца понял ответ. Вот моя оригинальная функция:

fxn_import_data <- function(file_path, filen)
    {work <-setwd(file_path)
    yelp <- stream_in(file(filen)) #creating a data fram called yelp using stream_in function}
    #head(yelp, 10)
    yelp_flat<- flatten(yelp) #helps turn JSON files with multiple df's into tabular format
    #str(yelp_flat) #displays abbreviated content (not needed for this data set)
    scoop <- as_data_frame(yelp_flat)
}

Цель этой функции - открыть исходный файл моих данных и распаковать его, что и происходит. Мне нужны эти данные для запуска моей следующей функции, которая показана ниже:

fxn_create_meta<- function(fxn_import_data, scoop) {return(scoop)
fxn_import_data <- function(file_path, filen)
  scoop <- as_data_frame(yelp_flat)
  scoop$homePlayers <- NULL #eliminates homePlayers column
  scoop$awayPlayers <- NULL
  pop <- scoop %>% separate(ball, c("ball_x", "ball_y", "ball_z"), sep = ",") 
  #separates one column into multiple 
  l <- pop %>% separate(ball_x, c("throw","ball_x"), sep = "c")
  gh <- l %>% separate(ball_z, c("ball_z", "tra"), sep = "\\)")
  Meta <- gh %>% separate(ball_x, c("kol", "ball_x"), sep = "\\(")
  Meta$tra <- NULL
  Meta$kol <- NULL
  Meta$throw <- NULL
  return(Meta)
}

Однако, когда я пытаюсь запустить вторую функцию, она говорит мне, что объект "scoop" не определен. Как мне это исправить?

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете написать две функции, в которых вторая функция запускает первую функцию:

fxn_import_data <- function(file_path, filen)
    {work <-setwd(file_path)
    yelp <- stream_in(file(filen))
    yelp_flat<- flatten(yelp)
    scoop <- as_data_frame(yelp_flat)
}


fxn_import_data <- function(file_path, filen){
  scoop <- fxn_import_data(file_path, filen)#RUN THE FIRST FUNCTION AND SAVE THE RESULT AS scoop
  scoop$homePlayers <- NULL
  scoop$awayPlayers <- NULL
  pop <- scoop %>% separate(ball, c("ball_x", "ball_y", "ball_z"), sep = ",")       l <- pop %>% separate(ball_x, c("throw","ball_x"), sep = "c")
  gh <- l %>% separate(ball_z, c("ball_z", "tra"), sep = "\\)")
  Meta <- gh %>% separate(ball_x, c("kol", "ball_x"), sep = "\\(")
  Meta$tra <- NULL
  Meta$kol <- NULL
  Meta$throw <- NULL
  return(Meta)
}

пожалуйста, прочитайте комментарий

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