我正在编写一个脚本,它在两个向量中读取两个.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
答案 0 :(得分:5)
str
是一个非常有用的函数(请参阅?str
以获取更多信息),应该经常使用它,尤其是验证R
对象类型。快速str(vector1)
和str(vector2)
会告诉您这些列是否被读取为字符而不是数字。如果是,则使用as.numeric(vector1)
对每个向量中的数据进行类型转换。
此外,names(vector1)
和names(vector2)
会告诉您列名是什么,并可能解决您的绘图问题。
答案 1 :(得分:5)
我怀疑vector1
和vector2
是向量。阅读?read.table
我们在值部分中注明:
值:
A data frame (‘data.frame’) containing a representation of the data in the file.
...
因此,即使您的两个文本文件只包含一个变量,读入的两个对象也将是每个都包含一个组件的数据框。
其次,您的数据文件不包含标题,因此R将组成变量名称。我没有对此进行测试,但是我在vector1
和vector2
中的变量都会被称为X1
。在head(vector1)
(或vector2
)上执行names(vector1)
和相同操作,以查看对象在R中的外观。
我可以看到为什么你可能会认为vector1.var
可能有效,但你应该意识到,就R而言,它正在寻找一个名为vector1.var
的对象。 .
只是R对象名称中的任何其他字符。如果您打算使用.
作为子集或选择运算符,那么您需要阅读R中的子集运算符。这些运算符包括$
和[
以及[[
。例如,请参阅R Language Definition manual或R 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)
但我想的是你的两个文本文件中有什么......