我刚刚开始使用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)
有什么想法吗? 谢谢!
答案 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}的对象列数的整数序列}。