【发布时间】:2014-09-07 01:22:09
【问题描述】:
所以我已经能够基于文本开发实体图,下面是一个示例。
X1 X2
PERSON Sherlock Holmes 1
PERSON Sir Arthur Conan Doyle 1
PERSON Sherlock Holmes 2
PERSON Watson 2
PERSON Moriarty 2
我已经成功地创建了一个无向图,其中包含 X1 列和 X2 列中的实体之间的关系。 X2 列中的数字是组号。夏洛克·福尔摩斯和亚瑟·柯南·道尔爵士属于同一组。理想情况下,我不想在 X1 列中的实体和 X2 列中的组号之间创建无向图,而是在实体和组的其他成员之间创建,如下所示。
X1 X2
PERSON Sherlock Holmes PERSON Sherlock Holmes
PERSON Sherlock Holmes PERSON Sir Arthur Conan Doyle
PERSON Sir Arthur Conan Doyle PERSON Sir Arthur Conan Doyle
PERSON Sir Arthur Conan Doyle PERSON Sherlock Holmes
PERSON Sherlock Holmes PERSON Sherlock Holmes
PERSON Sherlock Holmes PERSON Watson
PERSON Sherlock Holmes PERSON Moriarty
PERSON Watson PERSON Watson
PERSON Watson PERSON Sherlock Holmes
PERSON Watson PERSON Moriarty
PERSON Moriarty PERSON Moriarty
PERSON Moriarty PERSON Sherlock Holmes
PERSON Moriarty PERSON Watson
如果能够删除图表中的重复项,我会得到下面的结果。
X1 X2
PERSON Sherlock Holmes PERSON Sir Arthur Conan Doyle
PERSON Sir Arthur Conan Doyle PERSON Sherlock Holmes
PERSON Sherlock Holmes PERSON Watson
PERSON Sherlock Holmes PERSON Moriarty
PERSON Watson PERSON Sherlock Holmes
PERSON Watson PERSON Moriarty
PERSON Moriarty PERSON Sherlock Holmes
PERSON Moriarty PERSON Watson
我使用以下代码将文本与组号一起放入数据框中。
num.el <- sapply(entities.list, length)
association.matrix <- cbind(unlist(entities.list), rep(1:length(entities.list), num.el))
所以这是我收到 Flick 先生要求的错误的实际代码。数据是一封安然邮件。
entities.list <-
$all4
[1] " " "PERSON kaye"
$all9
[1] "MISC Content-Type : text plain; charset=us-ascii" "ORGANIZATION X-From"
"PERSON Kaye Ellis"
[4] "PERSON Lisa Mackey" "MISC X-bcc"
使列表符合数据框
association.matrix <- data.frame(matrix(unlist(entities.list), byrow=T))
association.matrix
使列表符合一个列表,其中同一列表项中的实体按数字中的关联分组
num.el <- sapply(entities.list, length)
association.matrix <- cbind(unlist(entities.list), rep(1:length(entities.list), num.el))
删除空字符串条目
association.matrix <- association.matrix[!apply(association.matrix, 1, function(x)
any(x==" ")),]
将矩阵强制转换为数据框并删除字符串作为因子 Association.matrix
所以数据现在看起来像这样
X1 X2
1 PERSON kaye 1
2 MISC Content-Type : text plain; charset=us-ascii 2
3 ORGANIZATION X-From 2
4 PERSON Kaye Ellis 2
5 PERSON Lisa Mackey 2
6 MISC X-bcc 2
这是弗利克先生的脚本,我正在尝试开始工作
association.matrix <- do.call(rbind, lapply(tapply(association.matrix$X1,
association.matrix$X2, combn, 2), function(x)
rbind(t(x), t(x)[,2:1])))
这是我得到的错误。
Error in FUN(X[[1L]], ...) : n < m
【问题讨论】:
标签: r graph social-networking igraph