我有一个变量,在一列上有一些字符串;所以为了进一步处理,我已将它们转换为因子:
myVar$strCol <- as.factor(myVar$strCol)
现在我想找回用于编写输出的字符串。我已经测试了,似乎有更多的可能性来反转as.factor
。我找到了:
as.character(myVar$strCol)
和
factor(myVar$strCol)
我很困惑,现在。哪个最好?哪个是最快的?我应该使用哪一个?是另一个更好的吗?
请帮忙,我是R的新手?
答案 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")