将列表中的多个数据框转换为它们自己唯一的语料库对象

Converting multiple dataframes within a list to their own unique corpus objects

我已经使用 split() 将一个大数据框按特定列的级别拆分为一个数据框列表,现在正尝试使用 Corpus() 函数将每个数据框分配到它自己的语料库对象中,但我无法获得想要的结果。

我已经尝试创建一个与我的数据框列表长度相同的随机规范列表,重命名规范列表中的每个元素,将我的数据框列表中的每个元素转换为语料库对象并分配每个到规范列表中的重命名变量。

df <- data.frame("A" = 10:12, "B" = c(1, 1, 2)) # create example df

split_df <- split(df, f = df$B, drop = T) # split df by B col

names(split_df) <- c("df1", "df2") # rename dfs

split_df 

> split_df
$df1
   A B
1 10 1
2 11 1

$df2
   A B
3 12 2

y <- as.list(rnorm(length(split_df))) # create list of norms length of df list

names(y) <- paste("corpus", 1:length(y), sep="_") # rename elements of list

# iterate over list and assign same column of each df to individual corpus
for(i in 1:length(y)){
        y[i] <- Corpus(VectorSource(split_df[[i]]$A))
}

list2env(y, envir = .GlobalEnv)

基本上,我希望能够创建多个语料库对象(与数据框列表中的数据框一样多),它们具有自己独特的名称,而不必为每个对象手动输入变量名 + Corpus() 代码104 个数据帧列表中的数据帧。

# actual result:

y[1]

> y[1]
$corpus_1
[1] "10" "11"

# expected result:

works_1 <- Corpus(VectorSource(split_df[[1]]$A))
works_1

> works_1
<<SimpleCorpus>>
Metadata:  corpus specific: 1, document level (indexed): 0
Content:  documents: 2

对于一个列表中的 104 个单独的 df,每个都有自己的名称,我如何才能重新生成上述预期结果? IE。 (corpus_1, corpus_2, ..., corpus_104)?

非常感谢。

lapply 是要走的路。

library(tm)

# create list of corpi 
all_corps <- lapply(split_df, function(x) Corpus(VectorSource(x)))

summary(all_corps)
    Length Class        Mode
df1 2      SimpleCorpus list
df2 2      SimpleCorpus list