我已导入具有多个工作表的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) }}}
它无法正常工作。 感谢任何人都可以提供帮助。
答案 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]))