R:在一个管道中组合几个 gsub() 函数

标签 r pipeline gsub

为了清理一些杂乱的数据,我想开始使用管道 %>% ,但如果 gsub(),我将无法使 R 代码正常工作不在管道的开头,应该发生在后期(注意:这个问题与正确导入无关,而是与数据清理有关)。

简单的例子:

df <- cbind.data.frame(A= c("2.187,78 ", "5.491,28 ", "7.000,32 "), B = c("A","B","C"))

A 列包含字符(在本例中为数字,但也可以是字符串)并且需要清理。
步骤是
df$D <- gsub("\\.","",df$A)
df$D <- str_trim(df$D) 
df$D <- as.numeric(gsub(",", ".",df$D))

一个人很容易就能做到这一点
df$D  <-  gsub("\\.","",df$A) %>%
          str_trim() %>%
          as.numeric(gsub(",", ".")) %>%

问题是第二个 gsub,因为它要求输入 .... 实际上是前一行的结果。

拜托,有人能解释一下如何在管道中进一步使用 gsub() 之类的函数吗?
非常感谢!

系统:R 3.2.3,Windows

最佳答案

尝试这个:

library(stringr)

df$D <- df$A %>%
  { gsub("\\.","", .) } %>%
  str_trim() %>%
  { as.numeric(gsub(",", ".", .)) }

使用管道,您的数据将作为 传递第一 下一个函数的参数,所以如果你想在其他地方使用它,你需要将下一行包裹在 {} 中并使用 .作为数据“标记”。

关于R:在一个管道中组合几个 gsub() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39997273/

相关文章:

r - outline=FALSE 使用什么方法来确定异常值?

r - 在 R 中对连续日期进行分组

r - 将字符串拆分为数据帧,每个字符一列

r - 计算 36 个元素的向量的 N 个随机排列

function - 如何在 CmdletBinding() 脚本中定义函数?

unity3d - 是否可以在 Unity 的 HDRP 中创建 DepthMask 效果?

powershell - powershell 是否让您检测输出是否被定向到屏幕,还是通过管道传输到变量/文件?

ruby - 为什么我不能用 gsub 替换字符串中的 '\\+'?

json - JQ 从编码字段内部替换 "\n"

regex - 使用 gsub 创建统一的时间格式