我想知道是否有人可以解释我如何为我的数据框中的每个变量设置类型。
我编写了一个函数来调用来自yahoo API的引号作为JSON,并且我将它们中的每一个都绑定到一个名为portfolio的数据框中。不幸的是,数据非常原始,并且都是字符。
我问你是否有一种简单的方法,r可以自动将值存储为数字或字符,而无需通过数据帧设置每个变量。
我在这里粘贴我的脚本:
library(jsonlite)
# function that sets all NULL values to NA
nullToNA <- function(x) {
x[sapply(x, is.null)] <- NA
return(x)
}
# function that gets Quotes from Yahoo API
getQuote <- function(ticker) {
path <- paste("https://query.yahooapis.com/v1/public/yqlq=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22",ticker,"%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=", sep="")
stock <- fromJSON(path, flatten = TRUE)
q <- stock$query$results$quote
q <- nullToNA(q)
}
# define the tickers to include in portfolio
tickers <- c("AAPL","GOOG", "AMZN")
# portfolio construction
portfolio <- c()
for (ticker in tickers){
portfolio <- rbind(portfolio, getQuote(ticker))
}
portfolio < unlist(portfolio)
portfolio <- data.frame(portfolio, stringsAsFactors = FALSE)
这导致了3个obs和83个变量的数据帧,但是当我在投资组合上运行str()
时,我看到每个变量都是一个列表而不是字符或数字。有办法解决吗?