【问题标题】:Defining the levels of dataframe columns in R在 R 中定义数据框列的级别
【发布时间】:2015-02-12 20:50:12
【问题描述】:

我正在尝试重新定义在使用 cbind 从其他数据框的选定列创建数据框时分配的级别。数据帧包含整数,行名是字符串:

outTable<-data.frame(cbind(contRes$wt, bRes$log2FoldChange, cRes$log2FoldChange, dRes$log2FoldChange, aRes$log2FoldChange), row.names=row.names(aRes))

使用以下内容,我得到了列的级别:

levels(as.factor(colnames(outTable)))
[1] "F" "N" "RH" "RK" "W"  

我想通过传递以下内容来更改该顺序:

levels(as.factor(colnames(outTable)))<-c("W", "RK", "RH", "F", "N")

但我得到了错误:

could not find function "as.factor<-"

最终目的是在ggplot2中设置箱线图的X轴顺序。我以正确的方式接近这个吗?如果是这样,我错过了什么,如果没有,最好的方法是什么?

【问题讨论】:

    标签: r dataframe r-factor


    【解决方案1】:

    使用

    factor(colnames(outTable), levels=c("W", "RK", "RH", "F", "N"))
    

    如果您使用levels()&lt;-,您只需重命名/替换级别名称;你不要重新订购它们。这肯定不是你想要的他的行为。重新排序的最好方法是使用factor()

    【讨论】:

    • 嗨,我试过了,没有报错,但是当我重新运行levels(as.factor(colnames(outTable))) 命令时,我仍然得到了之前的顺序,并且绘图仍然以相同的方式排序。我错过了一些步骤吗?
    • 你为什么要重新运行它?您需要将此命令的结果保存到变量中。然后只需使用该变量进行绘图。不需要 as.factor。
    【解决方案2】:

    您可以在 as.factor 函数中将级别指定为参数

    factor(colnames(outTable), levels = c("W", "RK", "RH", "F", "N"), ordered=T)
    

    【讨论】:

    • 嗨,这会在 as.factor(colnames(outTable), levels = c("W", "RK", "RH", "F", "N") 中引发“错误”:未使用的参数(levels = c("W", "RK", "RH", "F", "N"))。我错过了什么吗?
    • 我的错误,你应该使用 factor() 函数,而不是 as.factor() 函数。也可以使用参数 ordered = T 来保留顺序
    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多