R中因子和反向的最佳实践

时间:2015-05-13 16:01:35

标签: r

我有一个变量,在一列上有一些字符串;所以为了进一步处理,我已将它们转换为因子:

myVar$strCol <- as.factor(myVar$strCol)

现在我想找回用于编写输出的字符串。我已经测试了,似乎有更多的可能性来反转as.factor。我找到了:

as.character(myVar$strCol)

factor(myVar$strCol)

我很困惑,现在。哪个最好?哪个是最快的?我应该使用哪一个?是另一个更好的吗?

请帮忙,我是R的新手?

1 个答案:

答案 0 :(得分:1)

虽然这两个对象的打印输出在data.frame中是相同的,但结果却完全不同。此外,在R新手的大多数情况下,在这种情况下,将使用&#34;字符变量&#34;来查看数据帧的内容。揭示它们是因素。

底线:只有您提供的第一个选项才能满足您的要求。

您应该学会使用str()检查R对象,并将其显示给具有dput()的SO受众 - 输出,以便可以避免控制台打印方法的歧义。

> test <- factor(1:10)
> test
 [1] 1  2  3  4  5  6  7  8  9  10
Levels: 1 2 3 4 5 6 7 8 9 10
> dput( as.character ( test) )
c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
> dput( factor (test) )
structure(1:10, .Label = c("1", "2", "3", "4", "5", "6", "7", 
"8", "9", "10"), class = "factor")

虽然&#34;字符&#34;列没有提示它是一个因素,它仍然是下面dd - 对象中的一个:

> dd <- data.frame(test=letters[1:10], num =1:10)
> dd
   test num
1     a   1
2     b   2
3     c   3
4     d   4
5     e   5
6     f   6
7     g   7
8     h   8
9     i   9
10    j  10
> dput(dd)
structure(list(test = structure(1:10, .Label = c("a", "b", "c", 
"d", "e", "f", "g", "h", "i", "j"), class = "factor"), num = 1:10), .Names = c("test", 
"num"), row.names = c(NA, -10L), class = "data.frame")