Почему я получаю эту ошибку «Ошибка: объект« папка »не найден»? - PullRequest
0 голосов
/ 11 апреля 2020

Код для R ниже, я не уверен, почему он не находит папку объектов. Я начинаю с распаковки файла tar с помощью функции untar (). Затем создайте обучающую папку, содержащую данные 20news-bydate-train, создайте функцию, которая читает папки, и создайте фрейм данных для хранения заголовка группы новостей, идентификатора сообщения и текста, который идет вместе с ним.

library(dplyr)
library(tidyr)
library(purrr)

url <- "http://qwone.com/~jason/20Newsgroups/20news-bydate.tar.gz"
download.file(url, destfile = "20news-bydate.tar.gz")
untar("20news-bydate.tar.gz")

training_folder <- "20news-bydate-train"

# Create a function to read all files from a folder into a data frame
read_folder <- function(infolder) {
  data_frame(file = dir(infolder, full.names = TRUE)) %>%
    mutate(text = map(file, read_lines)) %>%
    transmute(id = basename(file), text) %>%
    unnest(text)
}

# Use unnest() and map() to apply read_folder to each subfolder
(raw_text <- data_frame(folder = dir(training_folder, full.names = TRUE)) %>%
    unnest(map(folder, read_folder)) %>%
    transmute(newsgroup = basename(folder), id, text))

1 Ответ

0 голосов
/ 11 апреля 2020

Примечание. Библиотека (readr) необходима для функции read_lines , используемой в функции read_folder . Этого не было в вопросе . Автору не известен точный ответ на вопрос «Почему я получаю сообщение об ошибке». Ниже приведена попытка решить проблему вместо этого.


Наиболее вероятная проблема:
При применении unnest () к фрейму данных его сначала необходимо изменить. Спрашивающий, вероятно, использовал функциональность в том виде, в каком она существовала до того, как была исключена. Добавление этого небольшого шага обеспечило обработку данных без ошибок.

Потенциальное решение:

library(dplyr)
library(tidyr)
library(purrr)
library(readr)

url <- "http://qwone.com/~jason/20Newsgroups/20news-bydate.tar.gz"
download.file(url, destfile = "20news-bydate.tar.gz")
untar("20news-bydate.tar.gz")

training_folder <- "20news-bydate-train"

# Create a function to read all files from a folder into a data frame
read_folder <- function(infolder) {
  data_frame(file = dir(infolder, full.names = TRUE)) %>%
    mutate(text = map(file, read_lines)) %>%
    transmute(id = basename(file), text) %>%
    unnest(text)
}

raw_text <- data_frame(folder = dir(training_folder, full.names = TRUE)) %>%
  mutate(temp = map(folder, read_folder)) %>%
  unnest(temp) %>%
  transmute(newsgroup = basename(folder), id, text)

преобразовать в фрейм данных

raw_text_df <- as.data.frame(raw_text)

Вывод выглядит так:

> print(head(raw_text_df ))
    newsgroup    id                                                               text
1 alt.atheism 49960                                 From: mathew <mathew@mantis.co.uk>
2 alt.atheism 49960                        Subject: Alt.Atheism FAQ: Atheist Resources
3 alt.atheism 49960    Summary: Books, addresses, music -- anything related to atheism
4 alt.atheism 49960 Keywords: FAQ, atheism, books, music, fiction, addresses, contacts
5 alt.atheism 49960                             Expires: Thu, 29 Apr 1993 11:57:19 GMT
6 alt.atheism 49960                                                Distribution: world

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...