R- 在 udf 中使用 gsub

R- using gsub in a udf

我正在尝试创建一个 udf 来查找和替换几个数据框中的一堆不同的字符串。示例:

x <- data.frame(a = c("AA","BB","CC"))
y <- data.frame(b = c("AB","BC","CD"))

如果我手动调用(如下所示),它会正常工作

x$a %<>% 
  gsub("A", "", .) %>% 
  gsub("B", "", .)

分别给我-("", "", "CC")("","C","CD")

但是如果我像这样在 UDF 中这样做:

col <- function(var) {
var %<>% 
  gsub("A", "", .) %>% 
  gsub("B", "", .)
}

col(x$z)

没用。这是有原因的吗?

您需要将其分配给如下列

y$b = col(y$b)

如果您只是调用 col(y$b),由于函数作用域,它不会将其存储在实际的数据帧 y 中,即。 var 仅在函数 col 中可用,因此如果您想将 var 从函数 col 中取出,您需要将其分配给局部变量