Next: , Previous: The read.table() function, Up: Reading data from files



7.2 scan() 函数

假定有三个数据向量,长度一致并且要求并行读入。 其中,第一个向量是 字符模式,另外两个是数值模式,文件是 input.dat。第一步是用 scan() 以列表的形式 读入这三个向量,如下所示

     > inp <- scan("input.dat", list("",0,0))

第二个参数是一个设定读入向量模式的虚拟列表结构(dummy list structure)。 返回的结果 inp 是以三个读入向量作为分量的列表。 为了把数据条目分成三个独立的向量,可以 使用下面的赋值方式

     > label <- inp[[1]]; x <- inp[[2]]; y <- inp[[3]]

更为便利的是,虚拟列表可以设定命名的变量。这种情况下, 可以用名字直接访问向量。例如

     > inp <- scan("input.dat", list(id="", x=0, y=0))

如果你想分别访问这些变量,你要么可以 提取这些数据框中的分量并且赋给新的变量:

     > label <- inp$id; x <- inp$x; y <- inp$y

要么把这个列表绑定在搜索路径的位置 2。 (see Attaching arbitrary lists)

如果第二个参数是一个单一值(虚拟值)而不是列表,那么一个单一 向量将会被读入。它的所有元素将会和这个虚拟值的 模式一致。

     > X <- matrix(scan("light.dat", 0), ncol=5, byrow=TRUE)

R 里面有许多更为精细的输入工具, 在其他一些手册中会有具体介绍。