2013-04-27 54 views
1

在下面,我試圖將系統函數的輸出創建到每個虛擬主機的連接數的barplot,但是,我不確定如何轉換此輸出成中使用的矢量與barplot:當主機應該是(並作爲輸出)的文本串將系統輸出轉換成矢量

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_的一組字符串,但我不確定如何將這些值轉換成可繪製的向量。是否有循環的方法從系統輸出的字符串?我想象如果系統內循環,它仍然會被讀作一個單一的值,因此,不可繪製(據我所知)。我是R的新手,所以也許我理解的barplot應該如何工作是誤傳?

回答

5

使用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的轉換步驟很關鍵,因爲輸出是階級性的

+0

謝謝。我需要重做我有一點,但這似乎已經做到了。 – 2013-04-27 22:08:54