小智 14
对于大型数据文件,最好的选择是在将不必要的行导入R之前将其过滤掉.最简单的方法是通过OS命令,如sed,awk,grep等.以下代码每4次读取一次文件中的行:例如:
write.csv(1:1000, file='test.csv')
file.pipe <- pipe("awk 'BEGIN{i=0}{i++;if (i%4==0) print $1}' < test.csv ")
res <- read.csv(file.pipe)
res
> res
X3 X3.1
1 7 7
2 11 11
3 15 15
4 19 19
5 23 23
6 27 27
7 31 31
8 35 35
Run Code Online (Sandbox Code Playgroud)
read.csv("filename.csv")[c(FALSE, TRUE, FALSE, FALSE), ]
Run Code Online (Sandbox Code Playgroud)
会做的.
这是有效的,因为逻辑向量被循环使用,直到它匹配返回的数据帧的行数read.csv.
正如@df239 所建议的那样,使用命令行工具预先过滤行要好得多。
这是一个更简单的版本,使用sed:
df <- read.csv(pipe("sed -n '2~4p' test.csv"))
Run Code Online (Sandbox Code Playgroud)
该2~4p通知sed让每一个第4行,开始第2行。
| 归档时间: |
|
| 查看次数: |
5048 次 |
| 最近记录: |