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中(见绑定任意列表)。 如果第二个参数是一个单一值(虚拟值)而不是列表,那么一个单一向量将会被读入。它的所有元素将会和这个虚拟值的模式一致。
> X <- matrix(scan("light.dat", 0), ncol=5, byrow=TRUE)
R 里面有许多更为精细的输入工具,在其他一些手册中会有具体介绍。