在下文中,我尝试使用系统函数的输出来创建与每个虚拟主机的连接数的条形图,但是,我不确定如何将此输出转换为向量以供使用条形图:
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)
访问者的输出将是一组数值,而主机应该是(并且输出为)文本字符串。
我意识到主机和访客在上面的显示方式是行不通的(假设在我的初步理解中它们不是矢量),但这或多或少是我最终尝试将输出与各自轴相关联的方式,如果可能的话。
输出按预期显示(即,访问者的数值和主机的一组字符串_,但我不确定如何将这些值转换为可绘制的向量。是否有在每个中循环的方法来自系统输出的字符串?我想如果在系统内循环,它仍然会被读取为单个值,因此不可绘制(据我所知)。我是 R 的新手,所以也许我的对 barplot 应该如何工作的理解被误导了?
最佳答案
使用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
的转换步骤很关键,因为输出是类字符
关于r - 将系统输出转换为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257175/