Доступ к переменной в таблице в списке в R - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь выяснить, как написать функцию, которая будет обращаться к переменной в таблице, которая хранится в списке. Я использую пакет 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 не усложнит это, я думаю, что есть очень простое решение.

Спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете попробовать.

foo3 <- function(x)  {
  sur %>%
    group_by_at(x) %>% 
    summarise(proportion = survey_mean())
}

foo3("name")

вывод

# A tibble: 2 x 3
  name  proportion proportion_se
  <chr>      <dbl>         <dbl>
1 No           0.5        0.0714
2 Yes          0.5        0.0714
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...