R код для WhatsApp средней длины слова на человека - PullRequest
0 голосов
/ 04 ноября 2018

Я новичок в R. В настоящее время я проанализировал сообщения из чат-группы Whatsapp, и теперь я пытаюсь визуализировать данные для средней длины слова на участника.

Я использую этот код для подсчета количества слов для каждого сообщения "Эдди" for(i in grep("Eddy",chatcsv[,2],fixed=TRUE)){ length(which(!is.na(chatcsv[i,4:111]))) }

Это не возвращает никакого вывода или сообщения об ошибке.

Мое намерение состоит в том, чтобы затем суммировать общую длину, а затем поделить на количество раз, когда сообщение человека. Наконец, я планирую разместить среднее значение в виде вектора и визуализировать его в виде гистограммы.

Спасибо

Ответы [ 2 ]

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

Я думаю, что вы пришли из нефункционального языка. (Не язык, который является нефункциональным, а язык, который не является «функциональным языком».) Ваше выражение length(which(!is.na(chatcsv[i,4:111]))) ничего бы не сделало, потому что оно находится внутри цикла for, но не было присвоено ни одному имени. Это просто исчезает. Вам нужно было бы создать именованный вектор (скажем, res) с res <-numeric(0) перед циклом, а затем внутри цикла:

 res[i] <-  length(which(!is.na(chatcsv[i,4:111])))

Предыдущий ответчик путал grep и grepl в своем комментарии. Функция grep возвращает целочисленные значения; функция grepl возвращает логические векторы. Они оба могут быть использованы для индексации.

Неясно, даст ли это выражение основу для дальнейших усилий. Это будет зависеть от содержимого chatcsv[i,4:111]. Если содержимое состоит из отдельных слов, то, возможно, это будет успешно Если они являются предложениями, то это не так. Функция длины будет просто возвращать количество не-значений NA в векторе-строке. Только если ваши предыдущие (неописанные) операции создали чистый набор «слов» в этом наборе столбцов, вы получите значимые результаты.

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

Ваш синтаксис неправильный. Вы должны использовать:

allnames <- chatcsv[,2] #or cimilar
eddyindexes <- grep("Eddy",allnames,fixed=TRUE) #return indexes of eddys chats
eddyschats <- chatcsv[eddyindexes, 4:100]
eddysavgcharacters <- apply[eddyschats,function(x) mean(nchar(x))] #average nchars of eddys chats
...