首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R编程-按单词数对列表进行排序

R编程-按单词数对列表进行排序
EN

Stack Overflow用户
提问于 2016-09-20 22:34:26
回答 2查看 501关注 0票数 0

我有一个列表,列出了对一项调查的几个回答。我尝试按照每个响应中的单词数对列表中的元素进行排序。我在网上找到的所有东西都使用nchar,它按字符数排序,而不是按单词排序。

这就是我到目前为止所知道的:

代码语言:javascript
复制
gala.vector <- unlist(strsplit, gala.list, " ")

用空格拆分向量,在单词之间拆分

代码语言:javascript
复制
gala.list.sorted <- gala.list[order(gala.vector, decreasing=TRUE)]

然而,我被告知参数"gala.vector不是一个向量,并且接收到一个错误消息

EN

回答 2

Stack Overflow用户

发布于 2016-09-20 22:38:13

我们可以在每个list元素中使用split语句( 'gala.list‘),使用unlist it ('lst1'),使用lengths获取每个list元素的'length’,并使用order对‘gala.list’进行排序

代码语言:javascript
复制
lst1 <- lapply(gala.list, function(x) unlist(strsplit(x, " ")))
gala.list[order(lengths(lst1), decreasing = TRUE)]      

数据

代码语言:javascript
复制
gala.list <- list("something else to do", "three words only",    
              "using dput")                     
票数 0
EN

Stack Overflow用户

发布于 2016-09-20 22:42:24

可重现的示例和函数解决方案:

代码语言:javascript
复制
w <- c("this has four words", 
  "this one has five words", 
  "two words")

word_count <- function(x) {
  x <- lapply(x, function(y) trimws(strsplit(y, " ")[[1]]))
  x <- lapply(x, function(y) y[y != ""])
  unlist(lapply(x, length))
}

> word_count(w)
# [1] 4 5 2 

sort_by_wc <- function(x, decreasing = TRUE) {
  seq <- word_count(x)
  x[order(seq, decreasing = decreasing)]
}

> sort_by_wc(w)
# [1] "this one has five words" 
# [2] "this has four words"    
# [3] "two words" 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39596925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档