如何在R中读取列名称为0.3的列?

时间:2019-04-15 07:22:30

标签: r

library(ltm)
library(mokken)
data("LSAT")
df_aisp<-aisp(LSAT,search='normal')
df_aisp<-as.data.frame(df_aisp)
#subset if df_aisp$0.3==1
subset(df_aisp,0.3==1)

上述R脚本的输出为:

[1] 0.3
<0 rows> (or 0-length row.names)

实际上,df_aisp是:

       0.3
Item 1   1
Item 2   0
Item 3   1
Item 4   0
Item 5   0

这意味着subset给我错误的结果。
如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

我们可以对非标准格式的列名使用反引号(按原样对其进行评估)。按照标准格式,名称以数字开头。

subset(df_aisp,`0.3`==1)

此外,我们可以指定用[[[引用的列名称进行子设置

df_aisp[df_aisp[,"0.3"] ==1, , drop = FALSE]

但是,我们可以使用make.names来使名称成为标准名称,这将为列名添加前缀X

names(df_aisp) <- make.names(names(df_aisp))
names(df_aisp)
#[1] "X0.3"

然后,我们不需要反引号

 subset(df_aisp, X0.3 == 1)
 #       X0.3
 #Item 1    1
 #Item 3    1