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_的一组字符串,但我不确定如何将这些值转换为可绘制的向量。是否有一种方法可以在每个字符串中循环系统的输出?我想如果在系统内循环,它仍然会被读取为单个值,因此不可绘制(据我所知)。我是 R 新手,所以也许我了解如何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 回答