r 读取多个 .dat 文件

2024-04-23

你好,我是新来的,也是 R 的初学者,

我的问题: 如果我有多个文件(test1.dat,test2.dat,...)要在 R 中使用,我使用此代码来读取它们

filelist <- list.files(pattern = "*.dat")

df_list <- lapply(filelist, function(x) read.table(x, header = FALSE, sep = ","
                                               ,colClasses = "factor", comment.char = "", 
                                               col.names = "raw"))

现在我遇到的问题是我的数据很大,我找到了一个使用 sqldf-package 加快速度的解决方案:

sql <- file("test2.dat")
df <- sqldf("select * from sql", dbname = tempfile(),
                    file.format = list(header = FALSE, row.names = FALSE, colClasses = "factor", 
                                       comment.char = "", col.names ="raw"))

它对于一个文件运行良好,但我无法更改代码以读入多个文件,就像第一个代码片段中一样。有人能帮我吗?谢谢你!莫莫


这似乎有效(但我认为有更快的sql方法到此)

sql.l <- lapply(filelist , file)

df_list2 <- lapply(sql.l, function(i) sqldf("select * from i" ,  
    dbname = tempfile(),  file.format = list(header = TRUE, row.names = FALSE)))

查看速度 - 部分摘自 mnel 的帖子在 R 中快速读取非常大的表作为数据帧 https://stackoverflow.com/questions/1727772/quickly-reading-very-large-tables-as-dataframes-in-r/1820610#1820610

library(data.table)
library(sqldf)

# test data
n=1e6
DT = data.table( a=sample(1:1000,n,replace=TRUE),
                 b=sample(1:1000,n,replace=TRUE),
                 c=rnorm(n),
                 d=sample(c("foo","bar","baz","qux","quux"),n,replace=TRUE),
                 e=rnorm(n),
                 f=sample(1:1000,n,replace=TRUE) )

# write 5 files out
lapply(1:5, function(i) write.table(DT,paste0("test", i, ".dat"), 
                                 sep=",",row.names=FALSE,quote=FALSE))

read: 数据表

filelist <- list.files(pattern = "*.dat")

system.time(df_list <- lapply(filelist, fread))

#  user  system elapsed 
# 5.244   0.200   5.457 

read: sqldf

sql.l <- lapply(filelist , file)

 system.time(df_list2 <- lapply(sql.l, function(i) sqldf("select * from i" ,  
   dbname = tempfile(),  file.format = list(header = TRUE, row.names = FALSE))))

#    user  system elapsed 
#  35.594   1.432  37.357 

检查 - 除了属性之外似乎没问题

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

r 读取多个 .dat 文件 的相关文章

随机推荐

  • Start-Job - 实时检索输出

    我们通过以下方式启动 Powershell 函数Start Job并希望实时检索调用者的输出 有没有一种好的方法可以在不打电话的情况下做到这一点Retrieve Job在循环中 尝试这样的事情 appJob Start Job foreac
  • 对等网络应用程序的网络发现

    我希望有两个类 一个服务器类和一个客户端类 服务器类应该接收每个新客户端的 IP 地址和端口号并将它们存储在列表中 它应该为每个客户端提供已连接客户端及其 IP 地址的列表 然后 客户端可以使用 TCP 连接相互通信 问题是客户端不知道服务
  • 查找集合中的所有对象 Java Mongodb

    下面的代码查找集合中的第一个文档 package database import com mongodb BasicDBObject import com mongodb BulkWriteOperation import com mong
  • 使用 Python 从原始帧创建 MPEG4 视频文件

    我有一个原始视频帧源 我可以在 Python 中访问它 我想用它创建一个 MPEG4 视频 并带有 MP3 背景音乐 Python 中有哪些类型的工具和库可用于此类任务 最好我想要一个 API 我可以为其提供输出文件名 然后将各个帧作为 2
  • Aureliajs 等待应用程序构造函数上的数据

    我正在 aureliajs 中开发一个应用程序 开发过程已经开始了好几个月 现在后端开发人员希望对其服务进行版本控制 因此 我有一个 Web 服务可以调用来获取每个服务器端 Web api 应用程序的版本 然后 对于进一步的请求 调用正确的
  • 更好的德尔福印地 2007

    使用 Delphi 2007 附带的默认 indy10 或将其升级到最新快照版本哪个更好 为什么 谢谢 始终保持最新版本 它包含错误修复 如果您报告 Delphi 提供的库存版本存在问题 您将得到的第一个建议是升级到最新版本 因为您的错误可
  • 如何在选择自定义 UITableViewCell 时获取触摸坐标?

    当我触摸 触摸 UITableViewCell 时 我的 ViewController 的 UITableViewDelegate 方法 void tableView UITableView tableView didSelectRowAt
  • 整数包装对象仅在值 127 内共享相同的实例? [复制]

    这个问题在这里已经有答案了 这里它们是同一个实例 Integer integer1 127 Integer integer2 127 System out println integer1 integer2 outputs true 但这里
  • 在 ASP.NET 中通过 AJAX 使用后台工作程序

    我需要执行一项后台任务 该任务有一个显示完成百分比的进度条和一个取消按钮 撇开任务细节不谈 现在 我只想让一个示例正常工作 因此我只有三个主要事件处理程序 DoWork ProgressChanged 和 RunWorkerComplete
  • 检查 401,然后重定向 Angularjs,但仅在某些路由上

    我有一个很好的角度服务 可以通过查看服务器是否返回 401 错误消息来检查用户是否登录 如果是 用户将被重定向到登录页面 这很有效 但问题是它对于我的所有页面来说都是完全全局的 我有一条特殊路线位于 explore 顺便说一句 使用 UI
  • 使用 C# 更新 json 文件中的属性

    我希望更改 json 文件中每个 json 记录的特定属性 当方法完成执行时 我想将 Completed 属性更改为 true 我的 json 文件如下所示 LoanRecords LoanGUID 70dbec7e 5e94 460d 8
  • 如何将 AFHTTPClient、Afnetworking 1.0 迁移到 2.0

    我的问题是我有一个旧代码 我不知道如何更改它 我有 1 个名为 API HTTPClient 的类 我对 2 个方法有问题 因为我不知道如何将它们放入 2 0 中 这 void commandWithParams NSMutableDict
  • windows 10 本机构建错误 - Windows 上的本机映像构建当前仅支持目标架构:AMD64(不支持 x86)

    我正在测试一个新项目 并尝试使用 Gluon 来实现此目的 ATM 我正在 Windows 10 上使用 AMD Ryzen 7 进行构建 按照以下指示 https docs gluonhq com platforms windows ht
  • 如何使用 Spring Security 保护混合 Spring MVC + Flex 应用程序

    我尝试在 Spring 论坛上询问这个问题 http forum springsource org showthread php 109948 Problem configuring spring security 3 1 with hyb
  • 什么是微编码指令?

    我看过很多参考微编码指令的文献 这些是什么以及为什么使用它们 CPU 读取机器代码并将其解码为内部控制信号 将正确的数据发送到正确的执行单元 大多数指令映射到一个内部操作 并且可以直接解码 例如 在 x86 上 add eax edx只是将
  • 如何在 JavaScript 异步获取调用中使用返回的 JSON 错误

    我有一个async fetch调用它调用我的后端来创建具有电子邮件地址的客户 如果成功 返回的 JSON 会发送到doNextThing 功能 如果后端返回非 200 状态代码 它也会返回 JSON 例如 message Something
  • Python Selenium UnexpectedAlertPresentException

    我正在使用 selenium webdriver 使用 python 和生菜运行基本的 CRUD 测试 我的所有其他测试都运行良好 但是当我单击 删除 时 会出现一个模式对话框 要求用户确认他们想要删除该用户 弹出窗口出现的那一刻 我得到了
  • 从 Assembly.ReflectionOnlyLoad 迁移到 MetadataLoadContext

    我有以下代码适用于 NET 4 8 类库 它使用Assembly ReflectionOnlyLoad Code Retrieve the doman assembly used by the compilation Assembly ba
  • 如何从 PHP 中同一类中的其他方法访问变量?

    我尝试了这个但无法让它工作 class Profile extends CI Controller public function index foo bar public function form submit echo this gt
  • r 读取多个 .dat 文件

    你好 我是新来的 也是 R 的初学者 我的问题 如果我有多个文件 test1 dat test2 dat 要在 R 中使用 我使用此代码来读取它们 filelist lt list files pattern dat df list lt