r - 将系统输出转换为向量

标签 r

在下文中,我尝试使用系统函数的输出来创建与每个虚拟主机的连接数的条形图,但是,我不确定如何将此输出转换为向量以供使用条形图:

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/

相关文章:

r - 如何根据另一个数据框的列中的值对列名进行排序?

python - 将 groupby 之后应用的函数结果复制到 pandas 列中

r - 一个充满零的矩阵 - R

r - R : use `geom_ribbon` for shading under two different `geom_smooth` lines 中的 ggplot2

r - 关于 igraph::count_multiple() 的说明

r:readr:write_csv 如何压缩文件?

r - 如何将点添加到堆叠条形图

r - 如何在 R 中生成整数和定义长度的随机向量?

替换字符串中的第 n 个数字

r - 查找值是否大于向量中所有先前值的函数