2014-11-06 1 views
0

Я попытался запустить код ниже, однако он не работает, поскольку аргументы не все равны.Как создать таблицу только уникальных элементов в списке, чтобы я мог упорядочить элементы по частоте?

sentence= "I like tea and I love coffee and biscuits" 
    words = function(x) { 
     txt = unlist(strsplit(x,' ')) 
     wl = list() 
     for(i in seq_along(txt)) { 
     wrd = txt[i] 
     wl[[wrd]] = c(wl[[wrd]], i) 
     } 
     class(wl) <- "wordclass" 
     return(wl) 
    } 
    summary.wordclass <- function(y) { 
     cat("the frequency of words",names(sort(table(y), decreasing=TRUE)),"\n") 
    } 
    wordfreq=words(sentence) 
    summary(wordfreq) 

Я хочу, чтобы получить выходной сигнал как

[1] "I"  "and" "like" "tea" "love" "coffee" 

Однако я получаю ошибку

Ошибки в таблице (у): все аргументы должны иметь одинаковую длину

Если бы кто-нибудь мог помочь, это было бы здорово!

+0

Нет, они не являются. Посмотрите на 'wordfeq'. Элементы списка имеют разную длину. – Roland

+0

О, поэтому элементы в строке должны быть одинаковой длины, чтобы положить в таблицу? Есть ли способ сделать это? – Ger

+0

Я не уверен, что вы знаете, что делает «таблица» и как она работает. – Roland

ответ

0

бы

names(sort(table(unlist(strsplit(sentence," "))),decreasing=T))

работа для вас?

выход

[1] "and" "I" "biscuits" "coffee" "like" "love" "tea"

+0

Да! Отлично! Я так долго играл с ним и не мог понять, почему он не работает. Спасибо огромное! – Ger

Смежные вопросы