读取、子集“选择”并在R中写入txt文件

读取、子集“选择”并在R中写入txt文件,r,R,我想从file1.txt中选择一些部分,并将其保存在另一个名为file2.txt的文件中。 File1.txt: 我想在这里应用的数据库查询不是特定于语法的: 有没有办法在R中对文本文件应用数据库类型查询?我知道我们可以使用grep函数在.txt文件中搜索字母。但是我找不到任何在线帮助?有人知道我如何解决我的问题吗?提前感谢您: 请不要将此问题标记为重复: 这个问题有些不同。此外,我不能使用sqldf,因为这个包不适用于.txt文件 下面是否有助于回答csvfile中的子集数据 library(

我想从file1.txt中选择一些部分,并将其保存在另一个名为file2.txt的文件中。 File1.txt:

我想在这里应用的数据库查询不是特定于语法的:

有没有办法在R中对文本文件应用数据库类型查询?我知道我们可以使用grep函数在.txt文件中搜索字母。但是我找不到任何在线帮助?有人知道我如何解决我的问题吗?提前感谢您: 请不要将此问题标记为重复:


这个问题有些不同。此外,我不能使用sqldf,因为这个包不适用于.txt文件

下面是否有助于回答csvfile中的子集数据

library(sqldf);
read.csv.sql(file, sql = "select * from file", header = TRUE, sep = ",")
描述 将文件读入R,并使用sql语句对其进行筛选。R so只处理过滤后的部分
可以容纳比R更大的文件。

下面是否有助于回答csvfile中的子集数据

library(sqldf);
read.csv.sql(file, sql = "select * from file", header = TRUE, sep = ",")
描述 将文件读入R,并使用sql语句对其进行筛选。R so只处理过滤后的部分
可以容纳比R更大的文件。

这应该是所需的全部内容,请注意,数据表包在内部使用grepl,因此我认为regex可能也是一个选项

library(data.table)
# Depending on the characteristics of the csv file this call has to be adjusted
dt <- data.table(read.csv("File1.txt", header = FALSE, sep = " "))
# or
dt <- fread("test.txt")
# data.table looks like this after import
dt <- structure(list(V1 = structure(c(1L, 1L, 2L, 1L, 2L)
      , .Label = c("abc", "efg")
      , class = "factor")
      , V2 = 1:5
      , V3 = 6:10
      , V4 = structure(1:5, .Label = c("a", "b", "c", "d", "e")
      , class = "factor")), row.names = c(NA, -5L)
      , class = c("data.table", "data.frame"))

write.csv(dt[like(V1, "abc"), .(V2
                      , V3
                      , V4
                      )],file = "File2.txt", row.names = FALSE)

这应该是所需要的全部,请注意,data.table包中的like在内部使用grepl,因此我认为regex也可能是一个选项

library(data.table)
# Depending on the characteristics of the csv file this call has to be adjusted
dt <- data.table(read.csv("File1.txt", header = FALSE, sep = " "))
# or
dt <- fread("test.txt")
# data.table looks like this after import
dt <- structure(list(V1 = structure(c(1L, 1L, 2L, 1L, 2L)
      , .Label = c("abc", "efg")
      , class = "factor")
      , V2 = 1:5
      , V3 = 6:10
      , V4 = structure(1:5, .Label = c("a", "b", "c", "d", "e")
      , class = "factor")), row.names = c(NA, -5L)
      , class = c("data.table", "data.frame"))

write.csv(dt[like(V1, "abc"), .(V2
                      , V3
                      , V4
                      )],file = "File2.txt", row.names = FALSE)

假设文件在末尾的注释中重复创建:

library(sqldf)

read.csv.sql("File1.txt", 
  "select V2, V3, V4 from file where V1 = 'abc'", header = FALSE, sep = " ")
给予:

  V2 V3 V4
1  1  6  a
2  2  7  b
3  4  9  d
笔记
假设文件在末尾的注释中重复创建:

library(sqldf)

read.csv.sql("File1.txt", 
  "select V2, V3, V4 from file where V1 = 'abc'", header = FALSE, sep = " ")
给予:

  V2 V3 V4
1  1  6  a
2  2  7  b
3  4  9  d
笔记
为什么链接中的答案不起作用?read.tablefile1.txt[grepabc,readLinesfile1.txt,-1]。@RuiBarradas我在这里谈论的是数据库查询,那会。我想选择那些只包含abc的行。对于数据库查询,请检查包sqldf.please,然后带着非常具体的问题返回。如果您想直接处理文件,那么为什么需要R?只要使用终端。为什么链接中的答案不起作用?read.tablefile1.txt[grepabc,readLinesfile1.txt,-1]。@RuiBarradas我在这里谈论的是数据库查询,那会。我想选择那些只包含abc的行。对于数据库查询,请检查包sqldf.please,然后带着非常具体的问题返回。如果您想直接处理文件,那么为什么需要R?只要使用终端。