我有以下代码:
我下载了资产负债表信息,并使用rbind
将信息存储在data.frame
rm(list=ls(all=TRUE))
setwd('C:/Users/Matt/Desktop/Stefano')
library(quantmod)
symbols <- c("HOG", "GE", "GOOG")
symbols.f <- sapply(symbols, function(x) { paste0(x, ".f") })
symbols <- sub("\\.f","", symbols.f)
financials <- list()
for (i in 1:length(symbols)) {
financials[i] <- list(getFinancials(symbols[i], src="yahoo", auto.assign = FALSE))
}
我的问题是以下内容;
for(j in 1:length(symbols)) {
df[[j]] <- rbind(financials[[j]]$IS$A, financials[[j]]$BS$A, financials[[j]]$CF$A)
}
使用
时代码有效 dftest <- rbind(financials[[1]]$IS$A, financials[[1]]$BS$A, financials[[1]]$CF$A)
但是,我想根据symbols
值命名data.frames。
那是;
HOG <- rbind(financials[[1]]$IS$A, financials[[1]]$BS$A, financials[[1]]$CF$A)
GE <- rbind(financials[[2]]$IS$A, financials[[2]]$BS$A, financials[[2]]$CF$A)
GOOG <- rbind(financials[[3]]$IS$A, financials[[3]]$BS$A, financials[[3]]$CF$A)
答案 0 :(得分:1)
以编程方式分配全局变量通常不是一个好主意。但是,可以通过assign
:
symbols <- c("HOG", "GE", "GOOG")
for (i in seq_along(symbols)) {
assign(symbols[i], rbind(financials[[i]]$IS$A, financials[[i]]$BS$A, financials[[i]]$CF$A))
}
评论中建议的首选方法是使用list
:
result <- list()
for (i in seq_along(symbols)) {
result[[symobls[i]]] <- rbind(...)
}