質問編集履歴

2

エラー発生箇所の明記

2022/08/04 12:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,11 @@
14
14
  ### 発生している問題
15
15
  - igraphを使って算出した結果をCSVへ出力しようとしているが、エラーが発生。
16
16
 
17
+ ```ここに言語を入力
18
+ resFrame1<-data.frame(name[i],gdata.deg[i],gdata.clo[i],gdata.eve[i],gdata.bet[i])
19
+ ```
17
20
  Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""igraph.vs"" to a data.frame
21
+
18
22
 
19
23
 
20
24
  ```R

1

未解消点へ更新

2022/08/04 11:55

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Rネットワーク分析:組み合わせから重複を排除したい&結果を自動的に出力したい
1
+ Rネットワーク分析:Error in as.data.frame.default(x[[i]], optional = TRUE)
test CHANGED
@@ -12,35 +12,36 @@
12
12
  |...|...|...|
13
13
 
14
14
  ### 発生している問題
15
- 1. 重複する組み合わせがあり、次数中心性が2倍になっている。
16
- → 本来Aさんの次数中心性は3であるところ、Aさん-Bさん、Bさん-Aさんとダブルカウントしてしまっている。
17
- 2. igraphを使って算出した結果をまくアウトプットいが失敗している
15
+ - igraphを使って算出した結果をCSVへ出力しよ、エラーが発生
16
+
17
+ Error in as.data.frame.default(x[[i]], optional = TRUE) : cannot coerce class ""igraph.vs"" to a data.frame
18
+
19
+
18
20
  ```R
19
- pdata <- fread("merge_0730.csv", sep=",", header=T)
21
+ pdata <- fread("file.csv", sep=",", header=T)
20
22
 
21
23
  list_name <- unique(pdata$name.x)
22
- output <- data.frame(name=list_name, deg=-1, clo=-1, eve=-1, bet=-1)
23
- output <- data.table(output)
24
+ resFrame1<-data.frame() #forループ上書き
25
+ resFrame2<-data.frame() #最終的な結果統合用
24
26
 
25
27
  m <- length(list_name)
26
- for (i in 1:m) {
28
+ for(i in 1:m){
27
- i_name <- list_name[i]
28
- gdata <- graph.data.frame(pdata[,2:3], directed=F)
29
+ gdata <- graph.data.frame(pdata[,3:4], directed=F)
29
-
30
+
30
- gdata.deg <- degree(gdata) #次数中心性
31
+ gdata.deg <- degree(gdata)  #次数中心性
31
- gdata.clo <- closeness(gdata) #近接中心性
32
+ gdata.clo <- closeness(gdata) #近接中心性
32
- gdata.eve <- evcent(gdata)$vector #固有ベクトル中心性
33
+ gdata.eve <- evcent(gdata)$vector #固有ベクトル中心性
33
- gdata.bet <- betweenness(gdata) #媒介中心性
34
+ gdata.bet <- betweenness(gdata) #媒介中心性
34
-
35
+ name <- V(gdata)
36
+
35
- output[(name==i_name[i]), c("deg", "clo", "eve", "bet") := .(gdata.deg[i], gdata.clo[i], gdata.eve[i], gdata.bet[i])]
37
+ resFrame1<-data.frame(name[i],gdata.deg[i],gdata.clo[i],gdata.eve[i],gdata.bet[i]) #i番目の結果を代入
38
+ resFrame2<-rbind(resFrame2,resFrame1) #resFrame2の末行にresFrame1を代入
36
39
  }
37
-
38
- write.csv(output, "test.csv")
40
+ write.csv(resFrame2, "test.csv")
39
41
  ```
40
42
  ### 実現したいこと
41
43
 
42
- -1について:重複する組み合わせを排除したい。
43
- -2について:4つの中心性を計算し、人名ごとに4つの中心性を出力したい。
44
+ -4つの中心性を計算し、人名ごとに4つの中心性を出力したい。
44
45
  |name|次数中心性|近接中心性|
45
46
  |:--|:--:|--:|
46
47
  |Aさん|3|0.2|