让我先说一下这个问题,我对R的了解很少。我正在使用read.table(“file.txt”,T)将文本文件导入到R中。文本文件采用通用格式:
header1 header2
a 1
a 4
b 3
b 2
每个a是来自样品的观察结果,并且类似地每个b是来自不同样品的观察结果。我想计算我用tapply做的a和b集的各种统计数据(header2,header1,mean)。这很好。
现在我需要做一些a和b的qqnorm图并用qqline绘制。我可以使用tapply(header2,header1,qqnorm)来使用tapply(header2,header1,qqline)绘制每个BUT的分位数图,在最后一个分位数图上绘制最佳拟合线。以编程方式有意义,但它对我没有帮助。
所以我的问题是,如何将数据帧转换为两个向量(一个用于所有a,一个用于所有b)?那有意义吗?基本上,在上面的例子中,我想最终得到两个向量:a =(1,4)和b =(3,2)。
谢谢!
答案 0 :(得分:4)
创建一个同时执行这两项操作的函数。你将无法(至少很容易)恢复到旧的图形设备。
e.g。
with(dd, tapply(header2,header1, function(x) {qqnorm(x); qqline(x)}))
您可以在此处使用data.table
来编码优雅(和速度)
您可以传递在data.table范围内评估的函数的body
等效项。
library(data.table)
DT <- data.table(dd)
DT[, {qqnorm(x)
qqline(x)}, by=header1]
您真的不想用大量对象污染您的全局环境(效率低下)。