我觉得 purrr 的严格性妨碍了你在这里想要的东西。如果你只是lapply()
(或purrr::map()
),你会得到一个列表,非常适合使用:
# get an example Stata dataset
webuse::webuse("auto")
# drop the label on `price`
attr(auto$price, "label") <- NULL
# get all of the labels as a list
labels <- lapply(auto, attr, "label")
这给了你:
> str(labels)
List of 12
$ make : chr "Make and Model"
$ price : NULL
$ mpg : chr "Mileage (mpg)"
$ rep78 : chr "Repair Record 1978"
$ headroom : chr "Headroom (in.)"
$ trunk : chr "Trunk space (cu. ft.)"
$ weight : chr "Weight (lbs.)"
$ length : chr "Length (in.)"
$ turn : chr "Turn Circle (ft.) "
$ displacement: chr "Displacement (cu. in.)"
$ gear_ratio : chr "Gear Ratio"
$ foreign : chr "Car type"
unlist()
如果您愿意为没有标签的变量排除标签,您可以这样做:
> unlist(labels)
make mpg rep78 headroom
"Make and Model" "Mileage (mpg)" "Repair Record 1978" "Headroom (in.)"
trunk weight length turn
"Trunk space (cu. ft.)" "Weight (lbs.)" "Length (in.)" "Turn Circle (ft.) "
displacement gear_ratio foreign
"Displacement (cu. in.)" "Gear Ratio" "Car type"