R计数变量大小列出事件

时间:2013-06-04 07:19:48

标签: r lapply

我有一个可变长度的已排序子列表。每个子列表的大小可变。我想做两件事。第一个是每个子列表的出现次数的总和。例如。

[[11533]]
[1] "Mexican"     "Restaurants"

[[11534]]
[1] "Mexican"     "Restaurants"

[[11535]]
[1] "Food"    "Grocery"    "dinner"

Count                 Item
2            "Mexican"     "Restaurants"

1           "Food"    "Grocery" "dinner"

第二部分是将每个子列表分成一个向量,然后对每个项目求和。例如

[[11533]]
[1] "Mexican"     "Restaurants"

[[11534]]
[1] "Mexican"     "Restaurants"

[[11535]]
[1] "Food"     "Dinner"     "Grocery" 

"Mexican"
"Restaurants"
"Mexican"
"Restaurants" 
"Food"    
"Dinner"    
"Grocery" 

"Mexican" 2
"Restaurants" 2
"Food" 1    
"Dinner" 1    
"Grocery" 1

在python中,我会使用循环遍历主列表的for循环构建一个字典,每当我遇到字典中已有的项目时,该字典会增加1。然而,当涉及到R时,我才是个孩子。这是我到目前为止所尝试的内容。

tabled_data <- table(parsed_data)

告诉我,我需要拥有相同长度的数据

我也试过

for(i in length(parsed_data)){
  sum(parsed_data == parsed_data[i])
}

但是我收到错误消息“未实现这些类型的比较”

1 个答案:

答案 0 :(得分:2)

您可以使用table命令:

testData <- list(c("Mexican","Restaurants"),c("Mexican","Restaurants"),c("Food","Grocery","dinner"))

# First question (join the vectors and then table them)
  table(sapply(testData,paste,collapse=""))

# Second problem (unlist the list and table it): 
  table(unlist(testData))

如果向量中的顺序可能会发生变化,您可能希望在粘贴之前对它们进行排序。