我从一个矢量开始,我将cbind()转换为一个字符列表,然后转换为数据帧:
numbers <- c(110, 5, 43, 1008)
mat <- cbind(letters, numbers)
letters <- c("A", "B", "C", "D")
df <- data.frame(mat)
我应用了排序:
df[order(df[,2]),]
我得到了:
letters numbers
4 D 1008
1 A 110
3 C 43
2 B 5
它正在对列进行排序,就像它查看第一个数字,然后是第二个等等,我无法弄明白。 sort()函数适用于列,但我似乎无法应用于所有行...
谢谢!
答案 0 :(得分:4)
您以错误的方式创建了data.frame。从字符矩阵开始,所有内容仍然是字符矩阵。你需要一个as.numeric()
(或以不同的方式开始)。
R> df <- data.frame(letters=LETTERS[1:4], numbers=c(110, 5, 43, 1008),
+ stringsAsFactors=FALSE)
R> df
letters numbers
1 A 110
2 B 5
3 C 43
4 D 1008
R>
我们可以检查列类型:
R> sapply(df, class)
letters numbers
"character" "numeric"
R>
然后,排序按预期工作:
R> df[order(df[,2]),]
letters numbers
2 B 5
3 C 43
1 A 110
4 D 1008
R>