#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.