2017-12-01 5 views
0

を使用している場合:IGRAPH無効なインデックスエラー私は、ノードの二つのベクトル持っIfelse

bad_node_pair 
+ 2/2 vertices, named: 
[1] 1949 1967 

remaining_nodes 
+ 5/? vertices, named: 
[1] 1947 1948 1949 1967 1968 

を私はbad_node_pairremaining_nodesに存在するかどうかをテストし、もしそうであれば、表示されないものを返す:

bad_node_pair[names(bad_node_pair) %in% names(remaining_nodes)] 
+ 2/2 vertices, named: 
[1] 1949 1967 
私はループでこれを置くとき

は、しかし、私が手:

ifelse(
    bad_node_pair[names(bad_node_pair) %in% names(remaining_nodes)], 
     print(1), 
     print(0) 
     ) 
[1] 1 
Error in `[<-.igraph.vs`(`*tmp*`, test & ok, value = c(1, 1)) : 
    invalid indexing 

これは、ANSを印刷しますしかし、そのエラーをスローします。

何が起こっていますか?悪いノードに対する


データ:良いノードに対する

df1 <- read.table(header=T, text=" from to 
8 1949 1967") 
bad_g <- graph.data.frame(df1, directed=FALSE) 
bad_node_pair <- V(bad_g) 

データ:

df2 <- read.table(header=T, text=" from to 
1 1947 1948 
2 1947 1949 
3 1947 1967 
4 1947 1968 
5 1948 1949 
6 1948 1967 
7 1948 1968 
8 1949 1968") 
g <- graph.data.frame(df2, directed=FALSE) 
remaining_nodes <- V(g) 

答えて

1

あなたがifelseを使用する場合は、論理的な引数を渡すことがあります。

ifelse(any(bad_node_pair[names(bad_node_pair) %in% names(remaining_nodes)]), 1, 0) 
[1] 1 

または

私は `Python`と構文を混乱されたあなたが取得したい内容に応じて
ifelse(names(bad_node_pair) %in% names(remaining_nodes), 1, 0) 
[1] 1 1 

(私は私が正しくあなたの質問を理解している場合わからない)

+0

。ありがとう。 – Chuck

関連する問題