R 处理文件时,一般情况都是直接读取整个文件生成一个数据框保留数据信息。当文件过大或者不需要导入整个文件时,可以一行一行的读入数据及处理。
readLines()函数
从连接中读取部分或全部文本行
readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,
encoding = "unknown", skipNul = FALSE)
#con: 连接对象或字符串
#n: 整数,一次读取的行数;设为复数表示读取整个数据;不设置时,默认读取整个文件
#ok: 逻辑值;设置ok=F, 读到连接对象最后返回error
- 例子
创建数据
> test<-matrix(sample(1:200,50),nrow=10)
> test
[,1] [,2] [,3] [,4] [,5]
[1,] 146 166 148 139 60
[2,] 192 177 180 121 31
[3,] 56 93 188 186 3
[4,] 78 42 163 37 54
[5,] 123 44 1 16 130
[6,] 4 58 138 45 39
[7,] 30 197 77 32 57
[8,] 185 9 65 59 140
[9,] 79 155 110 95 108
[10,] 14 99 47 64 17
> write.table(test, file = "test.txt",col.names = F,row.names = F,quote = F)
逐行读入数据处理
> demo=file("test.txt",open="r")
> n=1
> while ( TRUE ) {
line = readLines(demo, n = 1)
if ( length(line) == 0 ) {
break
}
cat(n,line,"\n")
n=n+1
}
1 170 179 144 110 43
2 35 54 148 77 76
3 116 165 89 36 186
4 70 152 122 62 7
5 96 34 145 142 198
6 108 124 200 97 42
7 82 171 15 106 130
8 55 20 48 52 16
9 169 107 195 129 190
10 71 25 173 112 13
> close(demo)
网友评论