
間違えて「解決済」としてしまいました。
もし気づいていただけたら、ご回答いただけると助かります。
Dataset <- read.csv("Dataset.csv")
s.dist <- dist(Dataset[2:15])
s.cmd <- cmdscale(s.dist)
P <- c(16,16,16)[unclass(Dataset[,16])]
C <- c("blue","red","orange")[unclass(Dataset[,16])]
plot(s.cmd,pch=P,col=C)
text(s.cmd,labels=Dataset[,17],pos=4,offset=0.5,cex=0.8)
#
# 追加部分
#
for(n in 1:4){
for(g in 1:2){
start <- s.cmd[Dataset[,16]==g & Dataset[,17]==n,]
end <- s.cmd[Dataset[,16]==ifelse(g==1,3,1) & Dataset[,17]==n,]
arrows(start[1],start[2],end[1],end[2],code=2,length=0.1)
}}
重ねてお尋ねしますが、
for(n in 1:4){
こちらは1 groupのno.が4つ振られているからだと思いますが、
for(g in 1:2){
こちらの意味合いはどういったものなのでしょう…。
質問箱に不慣れで、何かすいません…。
No.1ベストアンサー
- 回答日時:
元質問はこれだよね。
https://oshiete.goo.ne.jp/qa/9175722.html
> for(g in 1:2){
グループごとに矢印を2つ書いているから。
2つで固定なら内側のループは展開してしまって下記のようにした方が分かりやすいかも。
for(n in 1:4){
start <- s.cmd[Dataset[,16]==1 & Dataset[,17]==n,]
end <- s.cmd[Dataset[,16]==3 & Dataset[,17]==n,]
arrows(start[1],start[2],end[1],end[2],code=2,length=0.1)
start <- s.cmd[Dataset[,16]==2 & Dataset[,17]==n,]
end <- s.cmd[Dataset[,16]==1 & Dataset[,17]==n,]
arrows(start[1],start[2],end[1],end[2],code=2,length=0.1)
}
お礼遅くなりました。
実際のデータで教えていただいたスクリプトを実行し、
線の色や太さなどは変更するところまではできました。
関数forでnは個体、gはグループという規定をしているんですね、きっと。
R-Tipsで少し関数を読んでみましたが、
実際、自分では思いつかない気がしました(目から鱗というべきか…)。
関数ifelseが私にはまだ理解できないので、
多少スクリプトが長くなっても、こちらの方が理解しやすい気がしました。
ありがとうございました。
No.2
- 回答日時:
先ほど回答した者です。
通常であれば、点p個を順番に矢印でつなぐのは、
次のようなスクリプトになります。
for(n in 1:(p-1)){ # ループが必要なのは始点の数だけ
start <- x[n,1:2] # 始点
end <- x[n+1,1:2] # 終点
arrows(start[1].start[2],end[1],end[2],code=2)
}
つまり、3点をつなぐなら、始点は2個です。
以前に回答したスクリプトは、
始点をどう指定するか、終点をどう指定するか、が
番号順ではないから、ちょっと複雑になっています。
(それは、先に回答された方が説明してくれています)
このループを、さらに、forループで回しています。
お礼遅くなりました。
度重なる疑問にご丁寧に解説していただきありがとうございました。
「==」とか「&」とか、R-Tipsを読んで少し意味がわかりました。
No.1さんのお礼にも書きましたが実際のデータで実行したところ、
一つの図に2つの要素(青まるに対しての赤まると黄まる)を含めてしまうと図としてbusyになってしまったので、
結局分けてみる(青まると赤まるの図、青まると黄まるの図)ことにしました。
集合体として全体の解析はしたいので、色を消すことで対応してみようかと思っています。
また、実際のデータには欠番もあるので、
ご提案いただいたように、線で結びたい番号順でデータ入力してみます。
前回の質問も含めて、色々なヒントをいただきましたので、
プレゼン資料として、どのような作図が視覚的に理解してもらい易いか、
少し試行錯誤してみます。
ご協力ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 IPCAで次元削減された画像の表示 1 2023/01/05 09:54
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループからの抜け出し方
-
DoEventsが必要な理由について
-
エクセルVBAで
-
Delphi for文
-
CやJAVa,Rubyなどプログラミン...
-
vba 複数の行を非表示の時コー...
-
プログラムはif文とforループが...
-
EXCEL VBA If~Else~構文の内容...
-
CSVファイルの特定の行だけを読...
-
UWSCの終了の仕方
-
【VBA】全て空白のセルの列の非...
-
VBS オーバーフローの原因
-
テキストファイルの行数を指定...
-
ループについて
-
アクティブセルから、A列最終行...
-
C言語でCGI
-
別窓を開くと親窓のGIFアニ...
-
Escキーを押すと、中断する時と...
-
GIFアニメをループさせたくない
-
テキストボックスの名前に変数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
範囲指定したセルを1つずつ飛...
-
vb.netです。2次元配列の要素を...
-
VBAで3秒だけ時間を止めたい
-
エクセルの当番表を作っていま...
-
UWSCに制限時間を付けたいです
-
DOSコマンドのループ内のTIMEコ...
-
VBAでの一時停止と再開の方法
-
CSVファイルの特定の行だけを読...
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBA for i=1 to lastrow
-
Do whileでExitせず、ループの...
-
VBA Boxが空白の場合のメッセー...
-
vb.netからエクセル関数書き込み
-
イベントの発生を待つ
-
乱数の桁数指定、または範囲指定。
-
エクセル関数で1〜12の数字がル...
おすすめ情報
rinkun様
kamiyasiro様
ご回答ありがとうございます。
スクリプト、やっぱり私には少し難しいです…。
ただいまちょっと時間がないので、後ほどじっくり再考してみます…。
本来なら個別でお礼をすべきところなのですが、
スクリプト理解に少々お時間をください。
ひとまず、レスポンスまで。