R 阅读表格、单行矩阵等
我正在努力解决一个我无法解决的简单问题,可能是因为缺少正确的关键字来查找 我有以下文件(test.data): 请注意,它是以制表符分隔的(对不起,在屏幕上不可见),没有尾随的制表符,第一行中少了一项,因此它将被解析为colnames。还请注意,缺少一项(第二行,列“Nd”);文件中完全为空(即两个连续的选项卡,中间没有任何内容) 福和y显然是两种不同的动物 尽管如此,我还是习惯性地对矩阵进行子集和绘图,那么foo有什么问题,以及如何解决它呢 谢谢 杰夫 更新:R 阅读表格、单行矩阵等,r,R,我正在努力解决一个我无法解决的简单问题,可能是因为缺少正确的关键字来查找 我有以下文件(test.data): 请注意,它是以制表符分隔的(对不起,在屏幕上不可见),没有尾随的制表符,第一行中少了一项,因此它将被解析为colnames。还请注意,缺少一项(第二行,列“Nd”);文件中完全为空(即两个连续的选项卡,中间没有任何内容) 福和y显然是两种不同的动物 尽管如此,我还是习惯性地对矩阵进行子集和绘图,那么foo有什么问题,以及如何解决它呢 谢谢 杰夫 更新: > str(foo) 'd
> str(foo)
'data.frame': 2 obs. of 8 variables:
$ Th: num 0.0813 0.333
$ Ba: num 6.049 0.459
$ Rb: num 0.535 0.356
$ La: num 0.614 0.261
$ Ce: num 1.601 0.224
$ Nd: num 1.19 0
$ Sm: num 0.387 0.203
$ Eu: num 0.146 0.189
更新到我的更新(抱歉):
好的,我们知道
但是
两人工作都很愉快。现在我迷路了。为什么富[1,1:2]和富[1,1:4]的行为会不同 为了确定,请执行
str(foo)
以查看foo
是如何存储的。也许它不是看起来的样子。它是一个data.frame,但你需要一个向量。使用unlist(foo[“PM”,1:4])
Bryan:>str(foo)“data.frame”:2个obs。共有8个变量:(…)它与测试文件无关read.table
返回一个data.frame。data.frame的行对应于观测单位,列对应于变量。通常情况下,您不会为这样的一个观察结果绘制变量,因此这个问题有点不寻常。@jfmoyen您需要正确使用R术语。那不是矩阵。它是一种特殊的列表,称为数据帧。和矩阵一样,它也有维度,但它仍然是一个列表。
> foo<-read.table("test.data",sep="\t")
> foo
Th Ba Rb La Ce Nd Sm Eu
PM 0.0813 6.049 0.5353 0.6139 1.6011 1.1892 0.3865 0.1456
V.MORB 0.3330 0.459 0.3560 0.2610 0.2240 NA 0.2030 0.1890
> rownames(foo)
[1] "PM" "V.MORB"
> colnames(foo)
[1] "Th" "Ba" "Rb" "La" "Ce" "Nd" "Sm" "Eu"
> y<-c(1,2,3,4)
> plot(x=foo["PM",1:4],y=y)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
> foo["PM",1:4]
Th Ba Rb La
PM 0.0813 6.049 0.5353 0.6139
> y
[1] 1 2 3 4
> str(foo)
'data.frame': 2 obs. of 8 variables:
$ Th: num 0.0813 0.333
$ Ba: num 6.049 0.459
$ Rb: num 0.535 0.356
$ La: num 0.614 0.261
$ Ce: num 1.601 0.224
$ Nd: num 1.19 0
$ Sm: num 0.387 0.203
$ Eu: num 0.146 0.189
> plot(x=foo[1,1:4],y=y)
Error in xy.coords(x, y, xlabel, ylabel, log) :
'x' and 'y' lengths differ
> plot(x=foo[1,1:2],y=y[1:2])
> plot(x=foo[1:2,1],y=y[1:2])