如何将嵌入式列表转换为R中的多个数据帧

时间:2017-05-25 07:13:21

标签: r

我有一个嵌入式列表如下。

运行此代码后得到的

dfs <- lapply(mf_sheets, data.frame, stringsAsFactors = FALSE)

dfs

$`DSP BlackRock Equity Fund`
Sr_No         Scrip_Name         Industry 
1               ABC                AUTO
2               DEF                IT
3               WER                Software

$DSP_BlackRockTop100_Equity_Fund

Sr_No         Scrip_Name         Industry 
1               ABC                AUTO
2               DEF                IT
3               WER                Software

我在上面的一个列表中有17个嵌入列表。我想要做的是将所有这些保存为单独的dtaframe,列表名称为数据帧名称。

我如何在R?中做到这一点?

1 个答案:

答案 0 :(得分:1)

sheet1 <- list(ID = 1:5, value = LETTERS[1:10])
sheet2 <- list(ID = 1:5, value = letters[1:10])
all.sheets <- list(sheet.1 = sheet1, sheet.2 = sheet2)

# Edit: Do guarantee unique and syntactically correct variable names via "make.names"
valid.names <- make.names(names(all.sheets), unique = TRUE)

for(i in seq_along(all.sheets)) {
  assign(valid.names[i], as.data.frame(all.sheets[i]))
}

编辑2:警告:此解决方案回答了OP的问题,但有严重的副作用,例如: G。覆盖当前环境中具有相同名称的任何现有变量。正如多个用户在这里所提到的,最好将列表元素保存在“容器”(例如listenvironment)中以避免副作用并改进编程风格(例如通过通用处理容器上的“循环”......

有关详细信息,请参阅:https://stackoverflow.com/a/17559641/4468078