我有一个嵌入式列表如下。
运行此代码后得到的
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?中做到这一点?
答案 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。覆盖当前环境中具有相同名称的任何现有变量。正如多个用户在这里所提到的,最好将列表元素保存在“容器”(例如list
或environment
)中以避免副作用并改进编程风格(例如通过通用处理容器上的“循环”......
有关详细信息,请参阅:https://stackoverflow.com/a/17559641/4468078