我们可以传递字面值来创建以下图形:
# R version 4.0.2 (2020-06-22)
library(igraph) # igraph_1.2.6
graph_from_literal(A-B)
# IGRAPH 7e5604a UN-- 2 1 --
# + attr: name (v/c)
# + edge from 7e5604a (vertex names):
# [1] A--B
我以为传递一个字符串会起作用,但实际上并没有。(这是一个小例子"A-B"
,想象一个复杂的长字符串):
graph_from_literal("A-B")
# IGRAPH 8b32703 UN-- 1 0 --
# + attr: name (v/c)
# + edges from 8b32703 (vertex names):
# objects are not the same
identical_graphs(graph_from_literal(A-B),
graph_from_literal("A-B"))
# [1] FALSE
我可能在使用错误的函数,或者需要另一个函数来“去除”引号。 cat和noquote都无效。有什么想法吗?
编辑1: 我想避免字符串操作:将“A-B”拆分为“from”和“to”,然后使用graph_from_dataframe
。例如,将其拆分为2列对于简单输入"A-B-C"
不起作用。
编辑2: 动机来自另一个问题,我认为可以使用igraph包作为解决方案。我用破折号替换了点,想将该字符串转换为图形对象,但意识到literal不喜欢字符串输入。
那么更长的问题是:如何将以下内容转换为图形对象?
# input
c('0.1', '0.1.1', '0.1.2', '0.11', '0.12', '0.11.1', '0.12.1', '0.12.2')
# expected output:
graph_from_literal(0-1, 0-1-1, 0-1-2, 0-11, 0-12, 0-11-1, 0-12-1, 0-12-2)
# IGRAPH 0792a00 UN-- 5 7 --
# + attr: name (v/c)
# + edges from 0792a00 (vertex names):
# [1] 0--1 0--11 0--12 1--2 1--11 1--12 2--12
编辑3:现在有一个相关的开放式GitHub问题475来解决这个功能。
graph_from_literal
的目的是为了能够快速创建用于实验的图形。期望的是您手动输入表达式。然后,据我所见,无论您是否使用引号键输入,都没有关系。 - Szabolcsgraph_from_literal
的预期使用不一致)。 - Szabolcs