R создать объект в функции и переименовать объект, используя переменную, но сохранив объект для использования в текущем сеансе - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть функция, которую я использую для получения финансовых данных с веб-сайта Wall Street Journal.В основном я хочу сделать копию данных, хранящихся в symData , и дать ей имя, такое же как symbol .Это означает, что объекты находятся в рабочей области и могут быть повторно использованы для просмотра другой информации.Я не хочу хранить их постоянно, поэтому создание временных файлов в файловой системе - не мой любимый метод.

Проблема в том, что я не могу понять, как это сделать.

    library(httr)
    library(XML)
    library(data.table)
    getwsj.quotes <- function(symbol) 
    {
        myUrl <- sprintf("https://quotes.wsj.com/AU/XASX/%s/FINANCIALS", symbol)
        symbol.data <- GET(myUrl)   
        x <- content(symbol.data, as = 'text')
        wsj.tables <- sub('cr_dataTable cr_sub_capital', '\\1', x)
        symData <- readHTMLTable(wsj.tables)
        mytemp <- summary(symData)
        print(mytemp)
        d2e <- gsub('^.* ', '', names(symData[[8]]))
        my.out <- sprintf("%s has Debt to Equity Ratio of %s", symbol, d2e)
        print(my.out)
    }
    TickerList <- c("AMC", "ANZ")
    for (Ticker in TickerList)
    {   
        Ticker.Data <- lapply(Ticker, FUN = getwsj.quotes)
    }

Вывод Ticker.Data:

> Ticker.Data
[[1]]
[1] "ANZ has Debt to Equity Ratio of 357.41"

Вывод mytemp <- summary(symData) имеет следующее:

     Length Class      Mode
NULL 12     data.frame list
NULL  2     data.frame list
...

Я пробовал различные способы выполненияэто когда я вызываю функцию, и все, что я когда-либо получаю, это последние данные символов.Я искал часы, пытаясь получить ответ, но пока что не повезло.Мне нужно уйти на несколько часов.Любая информация будет наиболее полезной.С уважением Стивен

1 Ответ

0 голосов
/ 22 февраля 2019

Отредактировано: я изменил свой ответ, основываясь на предложении @MrFlick.Это решило еще одну проблему.

library(httr)
library(XML)
library(data.table)
getwsj.quotes <- function(Symbol) 
{
        MyUrl <- sprintf("https://quotes.wsj.com/AU/XASX/%s/FINANCIALS", Symbol)
        Symbol.Data <- GET(MyUrl)   
        x <- content(Symbol.Data, as = 'text')
        wsj.tables <- sub('cr_dataTable cr_sub_capital', '\\1', x)
        SymData <- readHTMLTable(wsj.tables)
        return(SymData)       
}
TickerList <- c("AMC", "ANZ", "BHP", "BXB", "CBA", "COL", "CSL", "IAG", "MQG", "NAB", "RIO", "S32", "SCG", "SUN", "TCL", "TLS", "WBC", "WES", "WOW", "WPL")
SymbolDataList <- lapply(TickerList, FUN = getwsj.quotes)

Еще раз спасибо.

...