使用列名更改 tibble 中的值

Change value in place in a tibble using column names

我正在尝试使用函数更改某个地方的 tibble 列的值。但是,我没有管理它。也许有人可以提供帮助。我做了一个简单的可重现的例子:

noga2 <- tibble(a = c(1,12), b=c(12,3))
iot_test <- function(data, selcol) {
   data <- data %>%  mutate(UQ(selcol):= if_else(str_length((selcol)) == 2,"TA","0"))
   return(data)
}
iot_test(noga2, "a")

这是结果:

  a         b
 <chr> <dbl>
1 0        12
2 0         3

但我的想法是只更改 a 列中的第二个值。

谢谢 仁儿

如果您将 ensym 作为字符传递,则可以在 selcol 上使用它。然后你需要一个双爆炸来取消引用 selcol 在它被使用的地方。

noga2 <- tibble(a = c(1, 12), b = c(12, 3))

iot_test <- function(data, selcol) {   
   selcol <- ensym(selcol)
   mutate(data, !!selcol := if_else(str_length(!!selcol) == 2, "TA", "0"))
}

iot_test(noga2, "a")
#> # A tibble: 2 x 2
#>   a         b
#>   <chr> <dbl>
#> 1 0        12
#> 2 TA        3