斯皮尔曼的等级相关性

时间:2012-04-30 15:19:18

标签: r plot correlation

我正在编写一个脚本,它在两个向量中读取两个.txt文件。之后我想制作一个斯皮尔曼的等级相关并绘制结果。 第一个向量值的长度为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,...)中的错误:无效的plot-method

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:5)

我怀疑vector1vector2是向量。阅读?read.table我们在部分中注明:

  

值:

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

...

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

其次,您的数据文件不包含标题,因此R将组成变量名称。我没有对此进行测试,但是我在vector1vector2中的变量都会被称为X1。在head(vector1)(或vector2)上执行names(vector1)和相同操作,以查看对象在R中的外观。

我可以看到为什么你可能会认为vector1.var可能有效,但你应该意识到,就R而言,它正在寻找一个名为vector1.var的对象。 .只是R对象名称中的任何其他字符。如果您打算使用.作为子集或选择运算符,那么您需要阅读R中的子集运算符。这些运算符包括$[以及[[。例如,请参阅R Language Definition manualR manual

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

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)

但我想的是你的两个文本文件中有什么......