使用c(" df1"," df2," df3")等动态存储data.frames

时间:2018-03-06 12:06:27

标签: r

我有以下代码:

我下载了资产负债表信息,并使用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)

1 个答案:

答案 0 :(得分:1)

以编程方式分配全局变量通常不是一个好主意。但是,可以通过assign

在R中实现
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(...)
}