gpt4 book ai didi

r - 使用带有 quosures 的 select

转载 作者:行者123 更新时间:2023-12-04 19:33:44 24 4
gpt4 key购买 nike

问题

我将如何使用 quosures 执行以下操作?

library(tidyverse)
lkp <- c("am", "vs", "Sepal.Width", "Sepal.Length")
stringSelect <- function(mdat) {
lkpOK <- intersect(lkp, names(mdat))
mdat %>% select(one_of(lkpOK))
}
stringSelect(mtcars)
stringSelect(iris)

所以基本上,我如何子集 lkpq下面用 quos 实现同样的事情避免警告?
lkpq <- quos(am, vs, Sepal.Width, Sepal.Length)
quosSelect <- function(mdat) {
lkpqOK <- lkpq ##???
mdat %>% select(!!!lkpqOK)
}
quosSelect(mtcars) ## does not work
quosSelect(iris)

语境

在我的应用程序中,我混合了传统的 R 选择器和 tidyverse动词,但我想坚持一个系统以保持一致性。大多数事情很容易从一个“宇宙”转换到另一个“宇宙”,但我在这方面苦苦挣扎。

脚注

我知道有很多可能性可以解决这个问题。但是为了我的学习,让我们假设 lkpq是固定的,无法更改。所以我真的很想知道如何使用 select 的 quosures 列表。如果某些元素不是基础数据的一部分。

最佳答案

我们可以用

quosSelect <- function(mdat) {

nm1 <- intersect(names(mdat), sapply(lkpq, quo_name))
mdat %>%
select(nm1)
}

quosSelect(mtcars)
quosSelect(iris)

关于r - 使用带有 quosures 的 select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51154129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com