读取具有与R和sqldf没有头的文本文件的仅仅第n列(Read only n-th column o

2019-10-18 21:47发布

我有这样一个问题,类似的问题: 在使用SQLDF或read.csv.sql选择每一个第N列

我想读的大文件的一些列(150rows表> 500,000列,空格分隔,充满了数字数据和仅提供32位系统)。 该文件没有头部,因此在线程上面的代码没有工作,我决定写一个新的职位。

你有一个想法,以解决这个问题?

我想类似的东西,但用fread函数read.table或任何结果也OK:

MyConnection <- file("path/file.txt")
df<-sqldf("select column 1 100 1000 235612 from MyConnection",file.format = list(header=F,sep=" "))

Answer 1:

您可以使用substr来指定要读,如果他们是固定宽度列的开始和结束位置:

x <- tempfile()
cat("12345", "67890", "09876", "54321", sep = "\n", file = x)

myfile <- file(x)

sqldf("select substr(V1, 1, 1) var1, substr(V1, 3, 5) var2 from myfile")
#   var1 var2
# 1    1  345
# 2    6  890
# 3    9   76
# 4    5  321

请参见这篇博客的一些例子。 “选择”的声明可以很容易地构造paste ,如果你知道有关列的起始位置和宽度的细节。



文章来源: Read only n-th column of a text file which has no header with R and sqldf