4

ここに再現可能な例があります

#install.packages("expss")
library("expss")
data(mtcars)
mtcars = apply_labels(mtcars,
                      mpg = "Miles/(US) gallon",
                      cyl = "Number of cylinders",
                      disp = "Displacement (cu.in.)",
                      hp = "Gross horsepower",
                      drat = "Rear axle ratio",
                      wt = "Weight (1000 lbs)",
                      qsec = "1/4 mile time",
                      vs = "Engine",
                      vs = c("V-engine" = 0,
                             "Straight engine" = 1),
                      am = "Transmission",
                      am = c("Automatic" = 0,
                             "Manual"=1),
                      gear = "Number of forward gears",
                      carb = "Number of carburetors"
)

mtcars %>%
  tab_cols(total(),vs,gear) %>%
  tab_cells(gear) %>% 
  tab_stat_cpct(total_row_position = "none", label = "col %") %>%
  tab_pivot(stat_position = "inside_rows") 

私の状況では、変数の情報を tab_cols(total(),vs,gear) 動的に渡したいと思っています。したがって、使いやすさのために、次のような関数を評価したいとしましょう。

var1 <- "vs, gear"

mtcars %>%
  tab_cols(total(),var1) %>%
  tab_cells(gear) %>% 
  tab_stat_cpct(total_row_position = "none", label = "col %") %>%
  tab_pivot(stat_position = "inside_rows") 

明らかにエラーが発生します!! 単一のパラメーターに対してのみ機能する遅延評価を知っていました。したがって、複数のフォーラムで検索しようとしましたが、うまくいきませんでした。

したがって、1つの良い方法は次のとおりです。

var1 <- "vs"
var2 <- "gear"
mtcars %>%
  tab_cols(total(),eval(parse(text = var1)),eval(parse(text = var2))) %>%
  tab_cells(gear) %>% 
  tab_stat_cpct(total_row_position = "none", label = "col %") %>%
  tab_pivot(stat_position = "inside_rows") 

しかし、変数には3つまたは4つ以上の列情報が格納される可能性があるため、単一の変数(文字列またはベクトル形式の変数情報を持つ)でこれを実現したかったのです。

4

2 に答える 2