2013-04-27 98 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