R使用列索引从避风港标记数据框中提取属性(x)$标签

rol*_*and 7 attributes label r

我想$label从避风港标记的数据集中提取属性,但在使用列索引而不是列名称时总是失败。

我做了什么:

library(haven)
df <- read_sav(mydata.sav)

attributes(df$gender) 
#$`label`
#[1] "Are you ...?"
#
#$format.spss
#[1] "F1.0"
#
#$display_width
#[1] 0
#
#$class
#[1] "haven_labelled"
#
#$labels
#
#female male
# 
#     1        2 
Run Code Online (Sandbox Code Playgroud)

但使用:

attributes(df[,2])
#  $`names`
#[1] "gender"
#
#$row.names
#....
#
#$class
#
#[1] "tbl_df"     "tbl"        "data.frame"
Run Code Online (Sandbox Code Playgroud)

因为数据集中有很多变量,而且我不使用 SPSS,如果有人知道如何通过使用列索引而不是变量名称来解决该问题,那将会非常有帮助

Rui*_*das 7

这可以使用提取器来完成,请参阅关于之间的区别[[的著名问题。 使用 中的示例进行了测试。[[[
help('read_spss')

library(haven)

path <- system.file("examples", "iris.sav", package = "haven")
df1 <- read_sav(path)
attributes(df1[[5]])$labels
#    setosa versicolor  virginica 
#         1          2          3 
Run Code Online (Sandbox Code Playgroud)