2

我正在编写一个脚本,它读取两个向量中的两个 .txt 文件。之后,我想进行 Spearman 等级相关并绘制结果。第一个向量值的长度是 12-13 个字符(例如 7.3445555667 或 10.3445555667),第二个向量值的长度是一个字符(例如 1 或 2)。

编码:

vector1 <- read.table ("D:...path.../mytext1.txt", header=FALSE)
vector2 <- read.table ("D:...path.../mytext2.txt", header=FALSE)
cor.coeff = cor(vector1 , vector2 , method = "spearman")
cor.test(vector1 , vector2 , method = "spearman")
plot(vector1.var, vector2.var)

.txt 文件仅包含数值。

我遇到了两个错误,第 4 行的第一个错误就像“'x' 必须是数字向量”,第二个错误发生在第 5 行,就像“找不到对象向量 1.var”

我也试过

 plot(vector1, vector2)

代替

 plot(vector1.var, vector2.var)

但随后出现类似“stripchart.default (x1,...) 中的错误:无效的绘图方法

该实施面向http://www.gardenersown.co.uk/Education/Lectures/R/correl.htm#correlation

4

2 回答 2

5

str是一个非常有用的功能(更多信息请参阅?str),应该经常使用,尤其是在验证R对象类型时。快速str(vector1)str(vector2)会告诉您这些列是否被读取为字符而不是数字。如果是这样,则用于as.numeric(vector1)对每个向量中的数据进行类型转换。

此外,names(vector1)还会names(vector2)告诉您列名是什么,并且可能会解决您的绘图问题。

于 2012-04-30T15:30:26.837 回答
5

我怀疑vector1并且vector2是向量。阅读?read.table我们在价值部分中注意到:

价值:

    A data frame (‘data.frame’) containing a representation of the
    data in the file.

……

因此,即使您的两个文本文件只包含一个变量,读入的两个对象也将是每个具有单个组件的数据帧。

其次,您的数据文件不包含标题,因此 R 将组成一个变量名。我没有对此进行测试,但 IIRC 你的变量vector1vector2将被调用X1。在(或)上执行head(vector1)相同操作以查看您的对象在 R 中的外观。vector2names(vector1)

我可以理解为什么您可能认为vector1.var可能有效,但您应该意识到,就 R 而言,它正在寻找一个名为vector1.var. .只是 R 对象名称中的任何其他字符。如果您打算.用作子集或选择运算符,那么您需要阅读 R 中的子集运算符。这些是$and[[[。例如,参见R 语言定义手册R 手册

我怀疑您可以将代码更改为:

vector1 <- read.table ("D:...path.../mytext1.txt", header=FALSE)[, 1]
vector2 <- read.table ("D:...path.../mytext2.txt", header=FALSE)[, 1]
cor.coeff <- cor(vector1 , vector2 , method = "spearman")
cor.test(vector1 , vector2 , method = "spearman")
plot(vector1, vector2)

但我假设你的两个文本文件中有很多内容......

于 2012-04-30T15:30:38.117 回答