R:data.frame到vector

时间:2013-03-15 05:09:16

标签: r dataframe

让我先说一下这个问题,我对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)。

谢谢!

1 个答案:

答案 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]

您真的不想用大量对象污染您的全局环境(效率低下)。

相关问题