使用'扫描'读入R

时间:2015-07-01 20:42:48

标签: r matrix

我正在使用'扫描'在R中的函数,但我对"什么"的语法感到困惑。参数。我的目标是读取一个csv矩阵,并将其表示为R中的矩阵。

当我使用以下代码时,'扫描'创建一个列表,而不是矩阵:

auto_skims_2000 <- scan(file = "StLouis_2002_Auto_Peak.csv", what = list(OTAZ=0, DTAZ=0, MIN=0), sep = ",")

特别是,我不清楚&#39;什么&#39;的语法。参数有效。对于在前两列是整数而第三列是数字的矩阵中读取,哪一个是正确的(如果有的话)?:

what = list(integer, integer, numeric)
what = list(integer(0), integer(0), numeric(0))
what = list('integer', 'integer', 'numeric')
what = c('integer', 'integer', 'numeric')
what = list("integer", "integer", "numeric")
what = list(OTAZ = 0, DTAZ = 0, MIN = 0)

PS:我正在使用&#39; scan&#39;而不是'read.table&#39;故意因为我正在使用一个非常大的数据集,它运行得更慢并且使用太多内存作为数据框。

1 个答案:

答案 0 :(得分:0)

'scan'只能生成两种类型的输出,即矢量或列表。如果'what'参数被定义为列表,那么'scan'的输出也将是一个列表:

  

<强>值

     

如果是什么是列表,则列出与...相同的长度和相同名称(与任何名称相同)。

     

否则,是什么类型的向量。

参数'what'的类型由所需原子类型的样本值定义,而不是由原子类型的名称定义。例如:

test <- scan(file="filename.csv", sep = ",", what = "numeric")
test <- scan(file="filename.csv", sep = ",", what = "numeric")

两者都产生“字符”类型的向量。而

test <- scan(file="filename.csv", sep = ",", what = 0)
test <- scan(file="filename.csv", sep = ",", what = numeric(0))

都生成“numeric”类型的向量。