【问题标题】:In R, sort each row of two matched data frames在 R 中,对两个匹配的数据帧的每一行进行排序
【发布时间】:2016-03-04 02:46:22
【问题描述】:

我有两个具有匹配单元格的数据框。

    v <- data.frame(c1=c(30,15,3), c2=c(10,25,2), c3=c(20,35,4))
    w <- data.frame(c1=c("thirty","fifteen","three"), c2=c("ten","twenty-five","two"), c3=c("twenty","thirty-five","four"))

我需要在不诉诸(慢)循环的情况下对两者的每一行进行排序。排序v(这也将决定其他数据框的顺序)我使用推荐的方法here

    v.sorted <- t(apply(v, 1, sort))

如何操作数据框w 使其匹配v 的排序版本?

提前致谢!

【问题讨论】:

    标签: r sorting


    【解决方案1】:

    我们可以使用lapplyorder

    do.call(rbind, lapply(seq_len(nrow(v)), function(i) 
         as.character(unlist(w[i,])[order(unlist(v[i,]))])))
    #     [,1]      [,2]          [,3]         
    #[1,] "ten"     "twenty"      "thirty"     
    #[2,] "fifteen" "twenty-five" "thirty-five"
    #[3,] "two"     "three"       "four"       
    

    【讨论】:

    • 谢谢@akrun!您的解决方案适用于第 1 行,但不适用于其他行。实际上,lapply(seq_len(nrow(v)), function(i) w[i,][order(v[i,])]) 制作的列表是正确的。 rbind 有什么遗漏吗?
    • @emagar 抱歉,忘记了unlist 部分。它现在应该可以工作了。
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2021-12-04
    相关资源
    最近更新 更多