2012-08-09 97 views
1

請下載文件到您的計算機,然後運行:
http://freeuploadfiles.com/bb3cwypih2d2如何正確索引數組?

data=read.table("path/to/file", sep="|",quote='', 
     head=T,blank.lines.skip=T,as.is=T) 
ddata=array(data,dim=c(nrow(data),ncol(data))) 
ddata[1,1] 

我想提取的第一列的第一個元素。答案應該是AAC

我該怎麼做?

+1

你的數組被稱爲'ddata'而不是'ddate'。 – mnel 2012-08-09 06:33:41

+0

是不是打字問題?你先寫了'ddata',然後'ddate' – Pop 2012-08-09 06:34:23

+0

除了@mnel提到的內容,你的意思是'ddata [[1,1]] [1]'? – A5C1D2H2I1M1N2O1R2T1 2012-08-09 06:34:24

回答

15

一些建議來清潔您的代碼,使生活在長期內更容易:

與數據
  1. 工作在data.frame,不是array
  2. 千萬不要將TRUE設爲TTRUE是一種保留字,不能被重新定義,而T可以採取任何價值,包括FALSE
  3. 使用<-符號分配
  4. 不要使用縮寫參數名稱。爭議是header,而不是head。這可能會咬你

數組只能包含一個類的對象。因此,將您的數據轉換爲array將隱含地將numeric列轉換爲character,這肯定是一件壞事。

然後,您索引的數據幀是這樣的:

dat <- read.table("nasdaqlisted.txt", sep="|", quote='', 
        header=TRUE, blank.lines.skip=TRUE, as.is=TRUE) 

dat$Symbol[1] 
[1] "AAC" 

以下索引的替代方式也返回相同的元素:

dat[1, "Symbol"] 
dat[1, 1] 
dat[, 1][1] 
dat[["Symbol"]][1] 

如果你真的想做的事情愚蠢的東西,並將您的數據轉換爲數組,然後使用matrix

mdat <- as.matrix(dat) 
mdat[1, 1] 
Symbol 
"AAC" 

聲明:我只會發布這個,因爲你問。數組和矩陣功能強大且快速,但不適用於此數據。

+2

+1 very pedagogic – dickoa 2012-08-09 06:57:18

+0

如果我讓他們所有角色,爲什麼我不能得到ddata [2,5]? – 2012-08-09 07:10:04

+0

@FnzhXx編輯的答案。 – Andrie 2012-08-09 07:14:42