Преобразование нескольких фреймов данных в списке в их собственные уникальные корпусные объекты - PullRequest
1 голос
/ 31 октября 2019

Я разделил большой фрейм данных по уровням определенного столбца на список фреймов данных, используя 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)

По сути, я ожидаю, что смогу создать несколько объектов корпуса (столько же, сколько и в одном кадре данных в списке)собственные уникальные имена без необходимости вводить имя переменной + код Корпус () вручную для каждого кадра данных в списке из 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 отдельныхDFS в списке, каждый со своим именем? Т.е. (corpus_1, corpus_2, ..., corpus_104)?

Большое спасибо.

1 Ответ

1 голос
/ 31 октября 2019

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
...