2012-04-30 54 views
2

我正在寫一個腳本,它在兩個向量中讀取兩個.txt文件。之後,我想做一個Spearman的等級關聯並繪製結果。 第一個向量值的長度是12-13個字符(例如7.3445555667或10.3445555667),第二個向量值的長度是一個字符(例如1或2)。Spearman的等級相關

代碼:

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文件只包含數值。

我得到兩個錯誤,第一行第四行它就像「'x'必須是一個數字向量」 第二個錯誤發生在第5行,就像「對象向量1.var不能發現 「

我也試過

plot(vector1, vector2) 

,而不是

plot(vector1.var, vector2.var) 

但後來有這樣的錯誤」,在stripchart.default錯誤(X1,...):無效的情節,其實現方法具d

的實施是在http://www.gardenersown.co.uk/Education/Lectures/R/correl.htm#correlation

回答

5

我懷疑vector1vector2是向量。閱讀?read.table我們注意到在部分:

值:

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

....

所以,即使你的兩個文本文件只包含一個變量,該讀入的兩個對象將是每個單個組件的數據幀。其次,您的數據文件不包含標題,因此R將構成變量名稱。我沒有測試過這個,但是IIRC你的變量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) 

但我假設了不少關於什麼是你兩個文本文件...

+0

另外,通常的檢查必須是使R沒有將數據轉換爲因素等。請參閱@Maiasaura的答案中的'str()'。 –

5

str取向是一個非常有用的功能(參見?str更多),一要經常使用,特別是,以驗證R對象類型。快速str(vector1)str(vector2)會告訴你這些列是否被讀爲字符而不是數字。如果是這樣,則使用as.numeric(vector1)來對每個向量中的數據進行類型轉換。

此外,names(vector1)names(vector2)會告訴你列名是什麼,並可能解決你的繪圖問題。