如何将列表作为参数传入R语言expss包的apply_labels函数
解决方案
apply_labels 要求标签参数以独立的命名参数形式传入,直接传入列表对象会导致函数无法识别对应变量的标签配置,触发报错。你可以通过以下两种方式正确传递预定义的标签列表:
方法1:使用整洁求值的!!!解包操作符
这是最简洁的写法,直接将列表中的每个键值对拆分为函数的独立参数:
library(expss) data(mtcars) new_labels <- 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) # 验证标签是否设置成功 str(mtcars)
方法2:使用基础R的do.call函数
如果你不熟悉整洁求值语法,也可以用基础R的函数实现参数拼接传递:
# 第一个参数是要调用的函数,第二个参数是所有参数组成的列表 mtcars = do.call(apply_labels, c(list(mtcars), new_labels))
内容的提问来源于stack exchange,提问作者Harlan Nelson
相关产品推荐
相关产品推荐

