我有一个dataframe,它包含了网络中所有节点的连接,我想要创建一个名为“节点”的新数据帧,它包含所有唯一的节点。我试着做这样的事情
eids<-as.factor(d$from)
mids<-as.factor(d$to)
nodes<-data.frame(c(eids,mids))
nodes<-unique(nodes)但是当我试图创建我得到的图形:Some vertex names in edge list are not listed in vertex data frame时,这意味着我的部分数据被这个方法遗漏了。我的数据集很大,所以我在这里放了一个玩具数据集。
from<-c(2,3,4,3,1,2)
to<-c(8,8,7,5,6,5)
d<-data.frame(from,to)发布于 2019-11-28 17:05:44
首先,为了解决您的问题,您可以使用unique(stack(d)[1])获得一个值为1到8的列的数据框架。
在这里,我将解释为什么您的代码不能工作。使用c()组合因子类的对象是危险的。您可以尝试以下示例:
(x <- factor(c("A", "B", "C", "D")))
# [1] A B C D
# Levels: A B C D
(y <- factor(c("E", "F", "G", "H")))
# [1] E F G H
# Levels: E F G H
c(x, y)
# [1] 1 2 3 4 1 2 3 4实际上,因子对象是基于数字数据的,而不是字符。您可以去掉它的类,并发现它属于具有名为levels的属性的数字向量。
unclass(x)
# [1] 1 2 3 4
# attr(,"levels")
# [1] "A" "B" "C" "D"数字部分是指级别的索引。一个因子对象实际上就像记录其级别的索引一样工作。
https://stackoverflow.com/questions/59093046
复制相似问题