在R中绘制不同数据帧的行

时间:2013-05-09 19:00:55

标签: for-loop plot

我刚刚开始使用R,这可能是一个非常基本的东西,但这是我的问题: 我试图使用for循环绘制第一行和不同数据帧的剩余行的平均值,每个数据帧都有自己的绘图。 我首先存储了所有的表名     files <- c("file1, "file2", "file3"...)

然后我尝试使用for循环来绘制它     for(i in files) {plot(c(1:13), i[1,])}

                    X    T     C    A  C.1  A.1   A.2     G   T.1  T.2   A.3  G.1   A.4
sample1            NA -0.6  10.6 13.7 -4.7  5.6 -11.7 -13.8 -11.9 -6.4 -12.7  2.9   7.5
sample2           3.4 -1.5  -1.3 11.9 10.3  8.0  -8.0  -9.9   6.5 -0.5   3.4 -4.5   4.8
sample3           0.8 -5.7   3.9 20.3 14.0  8.1  -8.0  -9.8   5.9 -6.7   6.5 -3.9   9.0
sample4          15.9 -6.1  -5.8 14.8 22.4 15.4  -2.8  -9.4   9.4 -4.2  -0.8  1.5   4.5

这就是我遇到麻烦的地方。如果我使用我的文件名而不是i [1,],我可以绘制它,但我有很多文件。每个表看起来如下,但有更多的行和列。 此外,有没有人知道如何更改x轴,以便代替数字,并可以为每个位置分配一个核苷酸字母? (X,T,C,A,C,A,A,G,T,T,A,G,A)

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您需要使用get(i)才能引用i指定名称的对象。

例如:

for (i in files) {
  plot(1:ncol(get(i)), get(i)[1, ], xaxt='n')
  axis(1, at=1:ncol(get(i)), labels=colnames(get(i)))
}

使用xaxt='n'抑制默认的x轴,然后使用axis(1, ...)绘制。为了允许代码通用不同列数推广到data.frames,我使用了1:ncol(get(i)),它返回从1到名称为{{1}的对象列数的整数序列}。