如何正确索引数组?

时间:2012-08-09 06:28:43

标签: r

请将文件下载到您的计算机中,然后运行:
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 个答案:

答案 0 :(得分:15)

有些建议可以清理代码并使其长期生活更轻松:

  1. 使用data.frame中的数据,而不是array
  2. 切勿将TRUE称为TTRUE是一个永远无法重新定义的保留字,而T可以取任何值,包括FALSE
  3. 使用<-符号进行分配
  4. 不要使用缩写参数名称。争论是header,而不是head。这可能会咬你
  5. 数组只能包含一类对象。因此,将您的数据转换为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" 
    

    免责声明:我问你以后我就发布了这个。数组和矩阵功能强大且速度快,但不适合此数据。