r - 从列表中计算序列
问题描述
我有一个从 json 导入的字符串数组列表。
data = fromJSON("data.json")
> data
[[1]]
[1] "Finish" "Accept" "Request"
[[2]]
[1] "Finish" "Accept" "Request"
[[3]]
[1] "Finish" "Accept" "UnlockRequest"
[4] "Accept" "Request"
[[4]]
[1] "Finish" "Accept" "Request"
[[5]]
[1] "Finish" "Accept" "Request"
我现在的目标是统计列表对象,类似于table()
数据表的功能,但是table(data)
返回错误:
错误table(data)
:所有参数必须具有相同的长度
这里正确的解决方法是什么?
输出应该类似于:
c("Finish", "Accept", "Request") 4
c("Finish", "Accept", "UnlockRequest", "Accept",
"Request") 1
数据:
list(c("Finish", "Accept", "Request"), c("Finish", "Accept",
"Request"), c("Finish", "Accept", "UnlockRequest", "Accept",
"Request"), c("Finish", "Accept", "Request"), c("Finish", "Accept",
"Request"))
解决方案
请注意确定这是否“正确”,但这是一种方法。基本上把它变成data_frame
一个列表列,操作列表列(使用as.character
),然后计算它:
library(tidyverse)
data_frame(l1) %>%
mutate(char = as.character(l1)) %>%
count(char)
# A tibble: 2 x 2
char n
<chr> <int>
1 "c(\"Finish\", \"Accept\", \"Request\")" 4
2 "c(\"Finish\", \"Accept\", \"UnlockRequest\", \"Accept\", \"Request\")" 1
另一种方法是将paste
文本放在一起,运行table
,然后使用strsplit
。
table(sapply(l1, paste, collapse = ',')) %>%
as_data_frame() %>%
mutate(list_col = strsplit(Var1, ','))
Source: local data frame [2 x 3]
Groups: <by row>
# A tibble: 2 x 3
Var1 n list_col
<chr> <int> <list>
1 Finish,Accept,Request 4 <chr [3]>
2 Finish,Accept,UnlockRequest,Accept,Request 1 <chr [5]>
推荐阅读
- file - 如何从不同的路径调用二进制文件并打开文件
- java - 错误:从内部类引用的局部变量必须是最终的或有效的最终 Android Java
- flutter - 颤振 - 为拖动 showModalBottomSheet 设置捕捉
- swift - 像在 AsyncImage 中一样将修饰符应用于图像
- django - PersonalInfo 匹配查询不存在
- reactjs - 如何从 axios 的响应中获取价值
- java - UTF-8 字符在流经 kafka 主题时解码错误
- javascript - 单击后如何在 React js 中禁用按钮 20 秒
- aws-lambda - .NET 5 ASP.NET AWS lambda serverless.template 环境类型
- python - 在 Python 中从 OrderedDict(键/值)获取切片