Я пытаюсь выяснить, как написать функцию, которая будет обращаться к переменной в таблице, которая хранится в списке. Я использую пакет srvyr, потому что мне также нужно включить элементы дизайна опроса.
#Example
library(tidyverse)
library(srvyr)
num <- c(1:50)
var <- rnorm(50)
data <- data.frame(num, var) %>%
mutate(name = ifelse(num > 25, "Yes", "No"))
#This works fine as long as it's a dataframe
foo <- function(x) {
data %>%
group_by(data[,x]) %>%
summarise(n = n())
}
foo("name")
#With a slight edit this works for a tbl.
data_tbl <- as.tbl(data)
foo2 <- function(x) {
data_tbl %>%
group_by(data_tbl[[x]]) %>%
summarise(n = n())
}
foo2("name")
#Now the question is how to make this work for a tbl in a list.
sur <- data %>%
as_survey_design(ids = 1)
#This seems to access what I want.
sur$variables[["name"]]
#But it doesn't work inside the function.
foo3 <- function(x) {
sur %>%
group_by(sur$variables[[x]]) %>%
summarise(proportion = survey_mean())
}
foo3("name")
#Any thoughts?
Есть идеи? Если работа с пакетами srvyr не усложнит это, я думаю, что есть очень простое решение.
Спасибо!