【发布时间】:2015-11-17 04:30:57
【问题描述】:
我正在尝试做一个qdap::multigsub,以修复气候事件类型列表中的一些拼写错误、拼写错误的名称、变体表达式和一些其他“异常”(是的,它是 NOAA 的风暴数据集属于到关于可重复研究的 coursera 课程中的作业;尽管在作业中既不需要也不需要这种修复:这是我尽我所能!)。
所以我有名为“山洪”、“山洪”、“山洪”等的事件,我想将它们全部归为一个名为“山洪”的关卡。所以我首先做的是:
expr <- c("^flash.*floo.*","thun.*")
repl <- c("flash flood","thunderstorm")
每个向量的长度是 51,这是一个 knitr 赋值,所以为了保持可读性(边距列 = 80),我不得不使用类似的东西
expr <- c(expr,"new_expr_1","new_expr_2")
repl <- c(repl,"new_repl_1","new_repl_2") # repeated many, many times
这使得代码有点混乱。当然,我有完整的expr 和repl 向量,所以我希望将每一对(expr 和 repl)对应的值排成一行,这样代码的读者就会很轻松(这就是为什么dput 在这里不起作用:它们不会对齐每对值。
我试过这个:
a <- data.frame(expr=expr,repl=repl)
print(a,rownames=FALSE)
# copying the output, and then
b <- read.table(header=TRUE,text="paste_text_here")
但它失败了(我认为是因为print 抛出了不带引号的输出,并且有一些两个词的 expr 或 repl)。我也试过了
write.table(a,rownames=FALSE)
# copying the output, and then
b <- read.table(header=TRUE,text="paste_text_here")
但它也不起作用(我认为是因为write.table 输出引号之间的每个项目,而read.table 发现太多引号无法处理)。
我想在我的 Rmarkdown 文件中包含这样的内容:
exprRepl <- read.table(header=TRUE,text="expr repl
expr_1 repl_1
expr_2 repl_2")
如何从我现在拥有的数据中实现这一目标?
前5行数据框的dput如下:
> dput(a[1:5,])
structure(list(expr = structure(c(5L, 1L, 2L, 3L, 4L), .Label = c("^BLIZZARD.*",
"^FLASH.*FLOOD.*", "^HAIL.*", "^HEAVY.*RAIN.*", "^HURRICANE.*"
), class = "factor"), repl = structure(c(5L, 1L, 2L, 3L, 4L), .Label = c("BLIZZARD",
"FLASH FLOOD", "HAIL", "HEAVY RAIN", "HURRICANE"), class = "factor")), .Names = c("expr",
"repl"), row.names = c(NA, 5L), class = "data.frame")
如果有任何其他方法可以替换错误/变体名称,我很高兴收到您的来信并试一试!
【问题讨论】:
标签: r gsub read.table write.table qdap