Используйте список в аргументе для метода expss apply_label

#r #label #expss

Вопрос:

Я хочу использовать список в качестве аргумента apply_labels в пакете expss

Это работает с виньетки:

 library(expss) #gt; Warning: package 'expss' was built under R version 4.1.1 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 %gt;% str #gt; 'data.frame': 32 obs. of 11 variables: #gt; $ mpg :Class 'labelled' num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... #gt; .. .. LABEL: Miles/(US) gallon  #gt; $ cyl :Class 'labelled' num 6 6 4 6 8 6 8 4 4 6 ... #gt; .. .. LABEL: Number of cylinders  #gt; $ disp:Class 'labelled' num 160 160 108 258 360 ... #gt; .. .. LAB  

Это моя попытка использовать список:

 library(expss) #gt; Warning: package 'expss' was built under R version 4.1.1 #gt;  #gt; Use 'expss_output_viewer()' to display tables in the RStudio Viewer. #gt; To return to the console output, use 'expss_output_default()'. data(mtcars) new_labels lt;- list(  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 = apply_labels(mtcars, new_labels ) #gt; Error in if (curr_name %in% data_names) {: argument is of length zero  

Ответ №1:

Вам нужно использовать определенную идиому R do.call . Последнее утверждение будет выглядеть так:

 mtcars = do.call(apply_labels, c(list(mtcars), new_labels))  

Комментарии:

1. Это похоже на mtcars1 включение как data.frame, так и списка меток в список параметров-это то, чего мне не хватало. Я не знаю, возражаете ли вы против использования tidyverse.