2016-05-30 65 views
1

我想,当我跑的前两行的类命令被表示它作为data.frame删除重复转换数据帧对因子自动

laa <-subset(la,select =c(PermID)) 

class(laa) 

laa1<-laa[!duplicated(laa$userPermID), ] 

class(laa1) 

但它会自动转换成因子运行的重复命令之后。 有什么特别的原因。由于亚姆无法看到它在数据帧

+0

最有可能的是,当它仍然在data.frame中时,它已经是一个“因素”。更多信息请使用'str'而不是'class' –

回答

1

由于我们只有在第一步选择了“PermID”,默认选项,同时用[子集划分排有一列data.frame将drop=TRUE导致vector而不是data.frame。假设“PermID”为factor列,则vectorclass将为factor。为避免这种情况,请使用drop=FALSE

laa1 <- laa[!duplicated(laa$userPermID), , drop=FALSE] 

class(laa1)将是data.frame


如果我们看一下文档?"[",默认用途是

X [I,J,...,滴= TRUE]

降:对于矩阵和阵列。如果为TRUE,则结果被强制为 尽可能低的维数(请参阅示例)。这仅适用于 提取元素,不适用于替换。请参阅下面的详细信息 。