2012-12-27 27 views
3

我用R和當我嘗試運行下面的代碼:列表對象不能被強制鍵入「雙

f = scan(file="c:\\myfile.txt", sep=' ', what=list('numeric')) 

MY_MATRIX.M = matrix(f, ncol = 4, byrow = TRUE) 

Var.names = c('column1','column2', 'column3', 'column4') 
colnames(MY_MATRIX.M) = Var.names 

TEST = data.frame(MY_MATRIX.M) 

t1 = TEST[which(TEST[,4] == 0, arr.ind = TRUE),] 
t2 = TEST[which(TEST[,4] == 1, arr.ind = TRUE),] 

我有以下錯誤:

Error in which(TEST[,4] == 0, arr.ind = TRUE : 
    (list) object cannot be coerced to type 'double' 

我的文件中有4列並且由像數組一樣的數字組成。 任何人都可以幫我解決問題嗎?

+3

請重複舉例嗎? http://tinyurl.com/reproducible-000 –

+0

嘗試'class(TEST [,4])'和'typeof(TEST [,4])'和'head(TEST [,4])'讓我們知道它說? –

+0

>類(TEST [,4]) [1] 「列表」 >的typeof(TEST [,4]) [1] 「列表」 >頭(TEST [,4]) $欄3 [1 ]「column1」「column2」「column3」「1」「1247」「105」 [7]「0」「2」「1668」...... ... – was

回答

8

您遇到的問題是由於參數what=list(numeric)。你想告訴R該文件只有numeric值,而不是它包含帶有數字元素的列表。所以只需使用what=numeric,或根本不使用what

我不經常導入文本文件,但是當我這樣做時,我更喜歡read

+0

你是不是指'read.table()'? –

+1

'read'系列 - 我使用的所有數據都是'csv'格式,所以我想我一直使用'read.csv'。 –

+0

非常感謝!最後你是對的..問題是在什麼=列表(數字)。 – was

相關問題