按列表列将列表转换为多个数据帧

时间:2019-12-09 05:56:29

标签: r list function dataframe

我已导入具有多个工作表的Excel文件。这是一种列表格式。

names(mysheets)
#[1] "test_sheet1" "test_sheet2"

Test_sheet1和test _sheet2具有不同的矩阵。

我必须将每个工作表作为单独的数据框。

如果手动执行,代码将如下所示:

s_1 <- data.frame(mysheets[1])
s_2 <- data.frame(mysheets[2])

我尝试编写一个函数来执行此操作,因为我有很多excel文件,并且每个文件都有多个工作表

功能

p_fun <- function (y) {
for (s_i in 1:2) {
  for (i in 1:2) {
    s_i<- data.frame(y[i])
      return(s_i) }}}

它无法正常工作。 感谢任何人都可以提供帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用mget获取对象,然后将其更改为data.frame

list_df <- lapply(mget(names(mysheets)), data.frame)

如果您希望将它们作为单独的数据框,我们可以这样做

names(list_df) <- paste0('s_', seq_along(list_df))
list2env(list_df, .GlobalEnv)

答案 1 :(得分:0)

如果我们在assign循环中执行此操作,则可以使用for

for(i in seq_along(mysheets)) assign(paste0("s", i), data.frame(mysheets[i]))