如何使用 R 编辑或修改或更改大型文本文件中的单行

2024-04-05

我正在使用 R 将一些大型文本文件读入数据库,但它们包含数据库软件的非法字段名称。大型文本文件的列名仅在第一行中 - 是否可以仅编辑第一行而不循环遍历文件中的每一行(这似乎浪费资源)?

这是我尝试对一些示例数据执行的操作的两个示例。第一个将所有内容读入内存 - 因此这不适用于我的大型数据表。第二个可以工作,但速度很慢,因为它处理文件中的每一行。

我认为解决方案跨平台工作很重要and不需要安装外部软件(除了 R 包),只是因为我将与其他人共享此脚本,并且不想要求他们执行不必要的步骤。我正在寻找最快的方法来做到这一点仅在 R 内 :)

# create two temporary files
tf <- tempfile() ; tf2 <- tempfile()

# write the mtcars data table to a file on the disk
write.csv( mtcars , tf )

# look at the first three lines
readLines( tf , n = 3 )

# read in the entire table
z <- readLines( tf )

# make the only substitution i care about
z[1] <- gsub( 'disp' , 'newvar' , z[1] )

# write the entire table back out to the table
writeLines( z , tf2 )

# confirm the replacement
readLines( tf2 , 2 )
# done!

# # # # # # # OR

# blank out the output file
file.remove( tf2 )

# create a file connection to the text file
incon <- file( tf , "r" )

# create a second file connection to the secondary temporary file
outcon <- file( tf2 , "w" )

# read in one line at a time
while( length( one.line <- readLines( incon , 1 ) ) > 0 ){

    # make the substitution on every line
    one.line <- gsub( 'disp' , 'newvar' , one.line )

    # write each line to the second temporary file
    writeLines( one.line , outcon )
}

# close the connections
close( incon ) ; close( outcon )

# confirm the replacement
readLines( tf2 , 2 )
# done!

您为此使用了错误的工具。请改用一些命令行工具。例如。使用sed, 类似sed -i '1 s/disp/newvar/' file应该做。如果你have to在 R 中执行此操作,使用

filename = 'myfile'
scan(pipe(paste("sed -i '1 s/disp/newvar/' ", filename, sep = "")))

这是一个特定于 Windows 的版本:

filename = 'myfile'
tf1 = tempfile()
tf2 = tempfile()

# read header, modify and write to file
header = readLines(filename, n = 1)
header = gsub('disp', 'newvar', header)
writeLines(header, tf1)

# cut the rest of the file to a separate file
scan(pipe(paste("more ", filename, " +1 > ", tf2)))

# append the two bits together
file.append(tf1, tf2)

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

如何使用 R 编辑或修改或更改大型文本文件中的单行 的相关文章

  • R:根据元素长度从向量中删除元素

    如何根据字符串的字符数或长度从字符串向量中删除元素 df lt c asdf fweafewwf af aewfawefwef awefWEfawefawef gt df 1 asdf fweafewwf af aewfawefwef aw
  • 在 Shiny 中叠加两个 ggplot

    我有一个非常大的数据集 我正在使用 ggplot 在 Shiny 上绘制它 我有一个与 x 轴上的值相关联的滑块 我想用它对选定的数据子集重新着色 并让其余数据保持原样 最简单的选择是重新创建整个绘图 但由于它是一个大型数据集 因此这是一个
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • R data.table 连接不等式条件

    我想使用 data table 包根据多个不等式条件对数据进行子集化 data table 手册中的示例展示了如何使用字符变量执行此操作 但不显示数字不等式 我还了解了如何使用子集函数来执行此操作 但我真的很想利用 data table 二
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac
  • 为每个因素级别添加日期时间序列

    我有一个带有因子列的数据框 s lt data frame id 901 910 s id lt as factor s id 我有一个日期时间序列 library lubridate start lt now as difftime 2
  • 在`rmarkdown`中,如何在句子中添加图标?

    In rmarkdown 如何在句子中添加图标 例如如下 如何添加markdown icon单词 Markdown 和 is 之间 有一个很好的 R 包 可以轻松下载 RMarkdown 文档并将图标添加到其中 icons https gi
  • 删除缺失的数据值

    我删除了原始帖子 以便能够发布更大版本的数据集 实际上总共有 418 行 这是我正在进行的生存分析的数据 第一列是 ID 号 其他列标记为 V2 V20 有很多缺失的数据 用 表示 我用coxph 函数来获取以下内容 Saves survi
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • 通过 Shiny 中的串扰将 Plotly 与 DT 结合使用

    我正在编写一个应用程序来将 csv 文件读取为闪亮的并将散点图与 DT 表链接起来 我几乎遵循了 Plotly 网站上 DT 数据表上的示例 https plot ly r datatable https plot ly r datatab
  • R Leaflet Legend:colorBin-删除中断之间的小数

    我正在使用 Leaflet 库在 R 中创建交互式 HTML 地图 传说中采用的是colorBin用于创建将数据分为 6 个类别的方法 使用min values and max values 我已经定义了美国社区调查收入数据的特定范围可能落
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412
  • R data.table 1.9.2 关于 setkey 的问题

    这似乎是 1 8 10 后引入的一个错误 与包含列表的 DT 的 setkey 相关 运行下面两个代码来查看问题 library data table dtl lt list dtl 1 lt data table scenario 1 p
  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 如何返回包含最大值标签的向量

    我有一个 4 列数组 我想获得一个向量 其中每行包含包含该行最大值的列的标签 我可以在循环中执行此操作 但我想使用矩阵函数来提高速度 我怎样才能在不编写自己的库函数的情况下做到这一点 有一个函数可以做到这一点 如果x是你的矩阵 尝试max
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 如何定义“f_n-chi-square”函数并使用“uniroot”求置信区间?

    I want to get a 95 confidence interval for the following question 我已经写了函数f n在我的 R 代码中 我首先使用 Normal 随机采样 100 个样本 然后定义函数h
  • 当有很多列时,使用 readr::read_csv() 导入数据时覆盖列类型

    我正在尝试使用 R 中的 readr read csv 读取 csv 文件 我导入的 csv 文件大约有 150 列 我只包含示例的前几列 我希望将第二列从默认类型 我执行 read csv 时为日期 覆盖为字符或其他日期格式 GIS Jo

随机推荐

  • 将 CNN Pytorch 中的预训练权重传递到 Tensorflow 中的 CNN

    我在 Pytorch 中针对 224x224 大小的图像和 4 个类别训练了这个网络 class CustomConvNet nn Module def init self num classes super CustomConvNet s
  • 设置类变量的Pythonic方法是什么?

    也许我问错了问题 我有这样的代码 class ExpressionGrammar Grammar def init self nonterminals terminals macros rules precedence nontermina
  • 我可以使用 Excel javascript 添加创建工作簿吗?

    Excel javascript 加载项是否有任何等效项可以完成我们在 Word 中使用 context application createDocument 所做的事情 我在 Excel 应用程序对象中没有看到任何创建方法 正如 MSFT
  • 如何限制仅从 C# 中的外部类设置内部类的属性

    我有这样的代码的核心 public class OuterClass public static InnerClass GetInnerClass return new InnerClass MyProperty 1 public clas
  • 如何将 Notepad++ 配置为使用空格而不是制表符?

    Notepad 不断插入制表符 这后来弄乱了我的代码 这种情况不仅发生在我按下 Tab 键时 其他时候也会发生 我希望它使用 4 个空格而不是制表符 如何让 Notepad 插入空格而不是制表符 前往优先菜单下的菜单命令Settings 然
  • Hive - hive 中的逆透视功能

    我有两个表如下 Table A userid code code name property id 0001 1 apple id Y1234 0031 4 mango id G4567 0008 3 grape id H1209 0001
  • 将 pandas 的宽变长

    假设我在 pandas 中有以下数据框 AA BB CC date 05 03 1 2 3 06 03 4 5 6 07 03 7 8 9 08 03 5 7 1 我想将其转换为以下内容 AA 05 03 1 AA 06 03 4 AA 0
  • 比较 C# 和 ColdFusion 之间的密码哈希值 (CFMX_COMPAT)

    我有一个密码哈希值存储在一个表中 并通过以下 Coldfusion 脚本放置在那里 Hash Encrypt Form UserPassword GetSiteVars EnCode 我正在尝试在 C 应用程序中添加一些外部功能 我希望能够
  • 将 php 变量发布到新窗口

    我有一个由数据库动态构建的页面 对于动态构建的每个内容 我希望有一个弹出新窗口的链接 并且该新窗口将根据单击第一页上的哪个项目来填充数据库中的列表 我尝试过 POST 方法并将变量发布到 url 我知道这是危险的 另一个独特之处是 单击的链
  • MATLAB 求最大值一个结构体的

    我试图找到结构的最大值但是max tracks matrix 不起作用 它给我以下错误 使用 horzcat 时出错 CAT 论证维度不一致 你有想法吗 这是我的结构的样子 tracks 1x110470 struct array with
  • Android Edittext光标不可见

    我的应用程序中有一个编辑文本 它将在 Froyo 或 Gingerbread 中正确显示光标 但是在更高版本的 sdks 中 光标是不可见的 我在网上找到的解决方案是设置 android textCursorDrawable null 以便
  • Powershell 中的 CDPATH 功能?

    有没有人实现了等效的行为bash 的 cdpath http www caliban org bash bashtips在 Powershell 中 以前不知道CDPATH 很高兴知道 我为 Powershell 编写了以下内容 funct
  • 以对数刻度显示刻度标签 MS 图表 (log-log)

    我在 Visual Studio 2015 C 中使用 MS Charts 创建了一个具有对数刻度 两个轴 的绘图 见图 我需要在 x 轴上添加更多网格线和相应的标签 我想在 1 2 3 4 和 10 之间以及 10 到 100 20 30
  • 对不受信任(自签名)HTTPS 的 AJAX 调用会默默失败

    我想对使用自签名证书的安全服务器进行 AJAX 调用 在使用我的应用程序的环境中 这很好 我可以向用户提供 CA 证书并让他们在使用应用程序之前安装它 但是 有时 用户会在安装证书之前尝试访问该应用程序 在这些情况下 应用程序会默默地失败
  • 如何将 React 应用程序部署到 Heroku

    我已经使用 React 和 Node js 构建了一个单页天气应用程序 但似乎无法将其部署到 Heroku 到目前为止 我有 在 Heroku 上创建了一个名为 Weather app react node 的新应用程序 在 CLI 上登录
  • 如何在Notepad++中将大写字母转换为小写字母

    我主要使用 Notepad 进行编码 如何将大写字母转换为小写字母 反之亦然 只需选择要更改的文本 右键单击并根据需要选择大写或小写
  • 将 PSD 格式转换为 Gimp 可以读取的格式的方法

    我有一堆 PSD 文件 还有更多 我想将它们转换成我可以使用的格式 我之前曾 一些 成功地使用 Gimp 读取 PSD 但这些文件无法正确读取 有没有办法将 PSD 转换为 XCF 我尝试过 IrfanView 它可以正常显示 PSD 但无
  • 如何在 Python 中将日期时间转换为 UTC 时间戳?

    From http docs python org library time html http docs python org library time html 时间 mktime t 这是 localtime 的反函数 它的论据是 s
  • 使用 numpy.genfromtxt 在 Python 3 中加载 UTF-8 文件

    我有一个从 WHO 网站下载的 CSV 文件 http apps who int gho data view main 52160 http apps who int gho data view main 52160 下载 CSV 格式的多
  • 如何使用 R 编辑或修改或更改大型文本文件中的单行

    我正在使用 R 将一些大型文本文件读入数据库 但它们包含数据库软件的非法字段名称 大型文本文件的列名仅在第一行中 是否可以仅编辑第一行而不循环遍历文件中的每一行 这似乎浪费资源 这是我尝试对一些示例数据执行的操作的两个示例 第一个将所有内容