as.data.frame和cbind导致因子列

时间:2012-06-07 02:10:11

标签: r

我有一个大的data.frame,包含整数,字符和字符串列。我需要通过数字列对data.frame进行排序。

当我将原始列组合到data.frame中时,所有列都会更改为factor,包括排序所需的列。因此,排序会提供类似1, 10, 100...而非1, 2, 3...

的内容

这是我的问题的一个例子。

a <- 1:10
b <- c(1,3,5,6,2,10,100,110,7,4)
c <- LETTERS[1:10]
d <- as.data.frame(cbind(a, b, c))  # I am using this construction
e <- d[with(d, order(b)), ]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

其实你需要这样做:

d <- data.frame(a, b, c, stringsAsFactors=FALSE)

最后一部分stringsAsFactors=FALSE会阻止列d$c转换为因子。包含它,你的字符串将保留为字符串。

别忘了stringsAsFactors=FALSE - 它会拯救你无尽的痛苦,相信我!