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

问题描述 投票:0回答:1

我有以下代码:

我下载资产负债表信息,我使用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)
r
1个回答
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(...)
}
© www.soinside.com 2019 - 2024. All rights reserved.