これは私の最初の質問です。さあ、優しくしてください。リレーションシップデータを階層リストにするR
net <- graph_from_data_frame(d = Relationships,
directed = T)
plot(net)
:基本的に、これはネットワークマップを作るために使用することができ、エッジのリストがある
library('networkD3')
Relationships<- data.frame(Parent=c("earth","earth","forest","forest","ocean","ocean","ocean","ocean"),
Child=c("ocean","forest","tree","sasquatch","fish","seaweed","mantis shrimp","sea monster"))
> Relationships
Parent Child
1 earth ocean
2 earth forest
3 forest tree
4 forest sasquatch
5 ocean fish
6 ocean seaweed
7 ocean mantis shrimp
8 ocean sea monster
:
私はの形をしているいくつかのデータを持っています
私はそれを以下のdiagonalNetwork
関数で使用できるフォームに変換したいと考えています。このよう
Hierarchical_list <- list(name = "earth",
children = list(list(name = "ocean",
children = list(list(name = "mantis shrimp"),
list(name = "fish"),
list(name = "sea monster"),
list(name = "seaweed")
)),
list(name = "forest",
children = list(list(name = "sasquatch"),
list(name = "tree")
))
))
diagonalNetwork(Hierarchical_list)
:
私はこのループを使用してリストを生成しよう:
List_attempt <- list()
levels<- levels(factor(Relationships$Parent))
for(n in 1:length(levels)){
Children <- subset(Relationships, Relationships$Parent == levels[n], select = Child)
for(c in 1:length(Children)){
sublist <- as.list(Children)
List_attempt <- list(List_attempt, name = levels[n],children = sublist)
}
}
diagonalNetwork(List_attempt)
は、私はこのエラーを取得する:
Error in FUN(X[[i]], ...) :
'options' must be a fully named list, or have no names (NULL)
1 )th diagonalNetwork
のリストを作成するには?
2)失敗しました。正しい構造のリストを追い出すために私のループを修正するにはどうすればいいですか?
3)私が使用するはずの他の機能/パッケージは他にありますか?
助けてくれてありがとう、私はしばらくの間この壁に頭を打っています。 SOの質問をするより良い方法のフィードバックも歓迎されます。
明確化:同様の質問がここに発見された
、Convert a data frame to a treeNetwork compatible list。ただし、ルートは常に最初の列にあり、その子は後続の列にあり、igraphでよく使用されるこの質問のようなエッジのリストではないデータ構造に依存します。
@Procrastinatus Maximus、私は2つの質問の違いを明確にするためにそれを編集しました。これは、同じ最終目標を持ちながら関係データを変換していないため、ルートが最初の列にあり、親子構造全体が後続の列にある場合にのみ機能します。これはエッジのリストには当てはまりません。 –
私は質問を再開しました – Jaap