ОСНОВНОЙ - R Тип вопроса выпуска; введите целое число и содержит много «уровней»? - PullRequest
0 голосов
/ 02 ноября 2018

Я новичок в прекрасном языке R, и в настоящее время мне трудно понять следующее:

Я загружаю в файл CSV. Этот файл CSV содержит две колонки. Первый столбец является уникальным идентификатором. Второй столбец называется «содержимое». Столбец содержимого - это в основном весь читаемый текст с определенного URL.

Если я распечатываю содержимое первой строки второго столбца, я получаю следующий вывод.

Text[1:1,2:2]
[1] Autoservice Hofra  Home \xa0 Home Contact \xa0 Autoservice Hofra \xa0 Home Contact Autoservice Hofra Welkom op onze website \xa0 \xa0LASSA BANDEN DEALER \xa0 Wanneer is mijn auto toe aan een onderhouds inspectie Iedere auto heeft een instructieboekje Dat ligt meestal in het dashboardkastje van uw auto In dat boekje staat hoe en wanneer u de auto onderhoudt Autoservice Hofra Albert Einsteinweg 12 6045 GX Roermond Tel 0654965305 Kleine en grote beurt Bij Autoservice Hofra kun je terecht voor een grote en kleine beurt voor de zomer en winter checks maar ook airco onderhoud Zo zorgen we dat je niet alleen veilig en comfortabel de weg op gaat maar ook nog eens extra lang plezier hebt van je auto \xa0 We vervangen motorolie en het oliefilter vullen de ruitenvloeistof koelvloeistof en remvloeistof bij en houden rekening met de milieutoeslag Een groot deel van de checks die bij een APK worden gedaan komen ook bij de grote beurt aan bod Het is daarom voordelig om deze te combineren De motormanagement van de auto wordt zorgvuldig uitgelezen met diagnose apparatuur waardoor storingen en andere meldingen aan het licht komen \xa0 \xa0 \xa0 Airco Check \xa0Houdt de airco uw auto op de juiste temperatuur Ontwasemt de airco de autoruit slecht En blaast hij nog frisse lucht Doe de Airco Check Ook als het geen zomer is Wij voeren alle voorkomende onderhoudswerkzaamheden uit aan uw auto voor een zeer scherpe prijs Bij een duurdere reparatie wordt er te allen tijde overleg gepleegd met u Daarnaast zijn we in het bezit van de juiste kennis en gereedschappen om alle voorkomende reparaties uit te voeren \xa0\xa0Laat de werkzaamheden uitvoeren wanneer u dat uitkomt Home \xa0 \xa0 Contact
5432 Levels:  ...

Если я печатаю тип этой первой строки второго столбца, я получаю тип integer

typeof(Text[1:1,2:2])
[1] "integer"

Может кто-нибудь объяснить мне, почему определенный столбец имеет тип «целое число», в то время как он содержит символы. Я также запутался в части «5432 уровней: ...». Что подразумевается под «уровнями» в R?

Наконец, я хочу преобразовать каждую строку столбца 'content' в символы, чтобы я мог подать заявку, например, удалить все строки длиной <200, мой код: </p>

SText <- subset(Text, nchar(as.character(content)) > 200)

Прямо сейчас я получаю ошибку:

Error in type(Text[1:1, 2:2]) : could not find function "type"

Как я могу решить эту проблему? Любая помощь и информация будут высоко оценены!

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018
  1. читать ваш CSV, указав stringsAsFactors = FALSE

    DF <- read.csv("/Users/mypath/finalTotal.csv", stringsAsFactors=FALSE) DF2 <- read.csv("/Users/mypath/model.csv", stringsAsFactors=FALSE)

  2. \xa0 - это неразрывный пробел на латинице 1 (ISO 8859-1) в вашем DFText. Вы должны заменить его пробелом.

    DFText[,2] = gsub("\xa0", " ", DFText[,2])

0 голосов
/ 03 ноября 2018

В фоновом режиме и по соображениям эффективности факторы сохраняются в виде чисел. И по умолчанию read.csv() читает столбцы символов как факторы (что имеет смысл в статистическом мире), отсюда и тот факт, что это целое число. Вы должны использовать stringsAsFactors = FALSE на read.csv(), чтобы получить вектор символов (не фактор).

5432 levels: ... относится к уровням фактора, содержащимся в этом столбце. Фактор всегда отслеживает ВСЕ свои первоначальные возможные уровни. Так что даже если вы просто извлечете один элемент, он все равно будет иметь всю информацию об уровне.

typeof() - это не та функция, которую вы должны использовать, если вам нужно знать содержимое объекта. Как указано в doc , typeof() возвращает внутреннее представление объекта. Отсюда integer вы получите.

Вы должны попробовать class().

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