我想修改dplyr::muate()中的列属性.以下是一些示例数据:
library(dplyr, warn.conflicts = FALSE)
v1 <- tibble(
id = 1:5,
visit = 1,
x = 1:5,
y = c(0, 0, 0, 1, 1)
)
我想要得到的最终结果与我想要得到的结果相同:
attr(v1$id, "source") <- "Collected at v1"
attr(v1$visit, "source") <- "Collected at v1"
attr(v1$x, "source") <- "Collected at v1"
attr(v1$y, "source") <- "Collected at v1"
我知道我可以只使用for循环.
for (col in names(v1)) {
attr(v1[[col]], "source") <- "Collected at v1"
}
然而,我有理由想在dplyr内部这样做.我正试着go 做这样的事情.
v1 %>%
mutate(
across(
.cols = everything(),
.fns = ~ function_to_update_attributes("source", "Collected at v1")
)
)
现在,我甚至不能让它对单个变量起作用.这是我最接近的一次了.
v1 %>%
mutate(
id = `<-`(attr(.[["id"]], "source"), "Collected at v1")
)
它会返回
# A tibble: 5 × 4
id visit x y
<chr> <dbl> <int> <dbl>
1 Collected at v1 1 1 0
2 Collected at v1 1 2 0
3 Collected at v1 1 3 0
4 Collected at v1 1 4 1
5 Collected at v1 1 5 1
????欢迎并感谢任何有建设性的反馈!
这也发布在RStudio社区上:https://community.rstudio.com/t/modify-arbitrary-column-attributes-using-dplyr-mutate/144502