【问题标题】:writeLine R without quotation markswriteLine R 不带引号
【发布时间】:2020-04-02 05:39:51
【问题描述】:

我使用 gsub 将多个文件中的相同“字符串”替换为 data.frame 中的行,即对于文件 1,我将“字符串”替换为“替换 1”,对于文件 2,“替换 2”中的“字符串”(在 replace_df 中)等等(如下面的脚本示例)

in_list<-lapply(files_in_list, readLines)
 out_list<-list() 
  for (i in 1:length(in_list)) {
      out_list[i]<-gsub(replace_df[i,1],replace_df[i,2],in_list[i])
}

虽然有点脏,但效果很好。我遇到的问题是将这些文件写入 .txt 文件。当我尝试 writeLines 时,它会导致文件混乱,每一行都用引号引起来,并且丢失了原始文件的格式。如何避免结果文件在每一行中不包含引号,保持原始格式? 问候

【问题讨论】:

  • 我无法复制。 writeLines(c("hello", "world"), "test.txt") 生成一个没有引号的文件。您能否提供一些示例输入来演示该问题?
  • 不确定这是否相关,但是当分配给单个列表项时,您应该使用[[,即out_list[[i]]&lt;-gsub...
  • 哦,是的,这是一个错字(out_list[[i]]...)。输入是一个txt文件列表,给定程序的典型配置文件,例如:###this参数配置一个东西## parameter1=1 ###this参数设置其他东西### parameter2=0.5等,对于列表中的每个文件,更改参数1
  • 在输出中,每一行都用引号括起来

标签: r


【解决方案1】:

将您的in_list[i] 替换为in_list[[i]],原因与@GregorThomas 建议out_list 的原因相同。

作为演示:

in_list <- list(c('a','b'), c('a','b'))
gsub('a', 'A', in_list[1])
# [1] "c(\"A\", \"b\")"            # wrong

gsub('a', 'A', in_list[[1]])
# [1] "A" "b"                      # correct

【讨论】:

  • 哦,是的!多么愚蠢的错误!!,非常感谢@GregorThomas 和你
猜你喜欢
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多