在R中逐行读取大文件而不带标题

2023-12-04

我在 R 中有一个非常大的数据文件(千兆),如果我尝试用 R 打开它,我会收到内存不足错误。

我需要逐行读取文件并进行一些分析。我发现了一个关于这个问题的上一个问题,其中文件是由 n 行读取并跳转到带有 clump 的某些行。我已经使用了“Nick Sabbe”的答案,并添加了一些修改以满足我的需要。

考虑我有以下 test.csv 文件样本:

A    B    C
200 19  0.1
400 18  0.1
300 29  0.1
800 88  0.1
600 80  0.1
150 50  0.1
190 33  0.1
270 42  0.1
900 73  0.1
730 95  0.1

我想逐行读取文件的内容并执行分析。因此,我创建了以下循环来根据“Nick Sabbe”发布的代码进行读取。我有两个问题: 1)每次打印新行时都会打印标题。 2)尽管我删除了该列,但 R 的索引“X”列也被打印。

这是我正在使用的代码:

test<-function(){
 prev<-0

for(i in 1:100){
  j<-i-prev
  test1<-read.clump("file.csv",j,i)
  print(test1)
  prev<-i

}
}
####################
# Code by Nick Sabbe
###################
read.clump <- function(file, lines, clump, readFunc=read.csv,
                   skip=(lines*(clump-1))+ifelse((header) & (clump>1) & (!inherits(file, "connection")),1,0),
                   nrows=lines,header=TRUE,...){
if(clump > 1){
colnms<-NULL
if(header)
{
  colnms<-unlist(readFunc(file, nrows=1, header=F))
  #print(colnms)
}
p = readFunc(file, skip = skip,
             nrows = nrows, header=FALSE,...)
if(! is.null(colnms))
{
  colnames(p) = colnms
}
} else {
 p = readFunc(file, skip = skip, nrows = nrows, header=header)
}
p$X<-NULL   # Note: Here I'm setting the index to NULL
return(p)
}

我得到的输出:

       A       B    C
1      200      19   0.1
  NA   1       1     1
1  2   400     18   0.1
  NA   1       1    1
1  3   300     29   0.1
  NA   1       1    1
1  4   800     88   0.1
  NA   1       1    1
1  5   600     80   0.1

我想在剩下的阅读中摆脱:

 NA   1       1     1

另外,有什么方法可以让 for 循环在其他语言的文件结尾时停止,例如 EOF ???


也许这样的事情可以帮助你:

inputFile <- "foo.txt"
con  <- file(inputFile, open = "r")
while (length(oneLine <- readLines(con, n = 1)) > 0) {
  myLine <- unlist((strsplit(oneLine, ",")))
  print(myLine)
} 
close(con)

或使用扫描以避免分裂为@MatthewPlourde

我使用 scan :我跳过标题,并且 Quiet = TRUE 不会有消息说明已经有多少项目

while (length(myLine <- scan(con,what="numeric",nlines=1,sep=',',skip=1,quiet=TRUE)) > 0 ){
   ## here I print , but you must have a process your line here
   print(as.numeric(myLine))

} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在R中逐行读取大文件而不带标题 的相关文章

随机推荐

  • vb.net 中的 lambda 表达式

    我有一些东西让我绝对疯狂 Public Function GetAccountGroups As IList Of AccountGroup Dim raw account groups As IList Of AccountGroup r
  • Android:在 NDK 中的 jar 文件中链接预构建的共享库 (.so)

    我有一个编译为 jar 文件的静态 java 库 该 jar 使用 System loadLibrary 加载 so 库 然后另一个 Android 应用程序项目静态链接该 jar 文件 所有内容都是使用 NDK 中的 Android mk
  • 命令“/bin/sh -c apt-get install erlang”返回非零代码:1

    我是 Docker 的初学者 使用 Ubuntu 18 04 作为主机 在寻找解决方案时 我得到的唯一结果就是增加虚拟机磁盘大小 因为它是由于内存不足而发生的 我没有使用虚拟机 可用磁盘大小为 87 GB 以下是我的 docker 文件内容
  • 将 Google Cloud App Engine 上的 Node.js 应用连接到 Google Cloud SQL 实例

    我有一个使用 MySQL 的 Node 应用程序 通过配置 json 连接 client mysql connection host something user something password something database
  • puppeteer page.evaluate 页面未定义

    我想用 puppeteer 在输入中输入内容 但它返回一个错误 页面未定义 async function login const browser await puppeteer launch headless false const pag
  • 如何从类型转换为泛型?

    嘿那里 给出的是这个类 public static class FooClass
  • 如何制作 Android EditView“完成”按钮并在单击时隐藏键盘?

    当用户点击EditView Android 打开键盘以便用户可以在EditView 问题是 当用户写完后 没有办法隐藏键盘 用户必须按后退按钮才能隐藏键盘 有没有办法显示Done键盘上的按钮会隐藏键盘吗 首先你需要设置android ime
  • 在 IE 上使用 jquery 访问 Iframe 内容

    我正在尝试使用隐藏的 Iframe 上传文件并获取响应 以下代码在 Firefox 上运行良好 但在 IE 上无法运行 它无法获取响应 Line var content j this contents find body last text
  • Android - 微调器的文本下拉列表/选择不显示

    我正在使用此示例代码来填充 Spinner 数据是从数据库中读取的 选择显示正确 在本例中 它显示 绿色 和 红色 Spinner spinnerColor Spinner findViewById R id spinnertProfile
  • 如何使用 SOCK_DGRAM 制作双向 unix 域套接字?

    我正在尝试编写一个简单的 Unix 数据报服务器 客户端 但遇到了一些问题 我想要的是一个监听数据报套接字并向原始发送者发送对收到的每条消息的回复的服务器 我决定先尝试使用socat成为 服务器 并用 C 编写客户端 我像这样运行 soca
  • Swagger UI 为空并给出 403

    我正在使用 Spring Boot 并且已将 swagger 添加到我的依赖项中
  • 如何将旧日志文件导入graylog作为输入?

    我能够设置灰色日志服务器和graylog web 并能够在 apache2 tomcat 和其他应用程序的帮助下设置生成日志的输入灰色日志收集器 e g apache access type file path var log apache
  • Mac OSX 在构建 MonoDevelop iOS 应用程序时要求钥匙串访问

    在 Mac 上的 MonoDevelop 中构建项目时 我收到消息 MAC OS X 想要进行更改 请键入管理员的名称和密码以允许此操作 MAC OSX 想要使用系统钥匙串 我找到了帖子Mac OS X 想要在编译项目时使用系统钥匙串但这并
  • 程序集 x86 NASM - 避免读取返回键

    我刚刚开始学习汇编 但没有找到任何有帮助的有用内容 我正在创建一个简单的程序来读取用户输入 基本上 section bss opA resw 1 opB resw 1 section text global start inputA mov
  • 如何将 16 位 wav 转换为原始音频

    我正在尝试使用 sox 将星号语音邮件转换为原始音频 原始wav的编码信息是PCM S16 LE 所以我想我可以这样做sox msg0000 wav msg0001 raw但其中的原始文件是乱码 根据 VLC 的说法 与 6 秒的源文件相比
  • 上传具有多种变体选项的新产品

    我正在尝试通过 ruby 而不是使用 Rails 上传产品 我已通过 API 上传了 100 多个产品 但我无法上传具有多个选项值的产品 即使我分配三个选项值 它也不会填充其他两个 这是脚本 require shopify api requ
  • NSArray initWithObjects: 是否保留对象?

    当使用 initWithObjects 将对象添加到 NSArray 时 任何人都可以为我确认这些项目被保留 我很确定它们是 但是找不到有关 initWithObjects 的任何地方提到它 CREATE DRINKS Coffee dri
  • 从 httpsession 检索浏览器区域设置?

    是否可以从 httpsession 对象 javax servlet http HttpSession 派生首选语言 可以从 servletrequest 中获取它 但我没有 感谢您的任何想法 斯文 用户的首选区域设置可作为请求标头 Acc
  • 在 Oracle DB 的 CLOB 字段中存储文件

    我的 oracle 表中有一个具有 CLOB 数据类型的列 如何在此列中存储 txt 文件以及如何检索同一文件 下面是表定义 fileID Number logFile CLOB 提前致谢 在 PL SQL 中将文件加载到 CLOB 中非常
  • 在R中逐行读取大文件而不带标题

    我在 R 中有一个非常大的数据文件 千兆 如果我尝试用 R 打开它 我会收到内存不足错误 我需要逐行读取文件并进行一些分析 我发现了一个关于这个问题的上一个问题 其中文件是由 n 行读取并跳转到带有 clump 的某些行 我已经使用了 Ni