2

以下では、システム関数の出力を取得して、各仮想ホストへの接続数の棒グラフを作成しようとしていますが、この出力を棒グラフで使用するベクトルに変換する方法がわかりません。

visitors <- system("sudo awk '{print $1};' /var/log/apache2/other_vhosts_access.log | sort | uniq -c | sort -rn | head | awk '{print $1}'")

hosts <- system("sudo awk '{print $1};' /var/log/apache2/other_vhosts_access.log | sort | uniq | sort -rn | head")

barplot(hosts, visitors)

訪問者の出力は一連の数値ですが、ホストはテキスト文字列であると想定されています (そして出力されます)。

ホストとビジターが上に表示される方法は機能しないことを理解しています (私の初歩的な理解では、それらがベクトルではないことを考えると)。すべて可能です。

出力は期待どおりに表示されます (つまり、訪問者の数値と、hosts_ の一連の文字列ですが、これらの値をプロット可能なベクトルに変換する方法がわかりません。各文字列をループする方法はありますか?システムの出力? システム内でループされた場合、それはまだ単一の値として読み取られるため、プロットできません (私が知る限り)。 barplot は動作するはずですが、誤解されていますか?

4

1 に答える 1

7

intern = TRUEたとえば、私の設定では、私は持っています

head(system("ls", intern = TRUE))
[1] "Articles"    "Books"       "coucou.tex~" "Cpp"        
[5] "Desktop"     "Devel"  

答えを完成させるために、実数の例を追加します

write.table(cbind(1:10, 3:12), file = "file.txt", row.names = FALSE)
vect <- system("awk '{print $1};' file.txt | tail -10", intern = TRUE)
vect <- as.numeric(vect)
plot(vect)

as.numeric出力はクラスの文字であるため、を使用した変換ステップは非常に重要です。

于 2013-04-27T21:52:28.787 に答える