【问题标题】:Indexing data.frame from vector in R从R中的向量索引data.frame
【发布时间】:2020-11-24 15:29:28
【问题描述】:

我有一个非常简单的索引问题。如果我有两个变量 A 和 B

A = c(1,2,1,1) 
B = data.frame( x = c(1,2), y=c( 'up', 'down') ) 

我需要 A 的输出,结果类似于

[1]“上”“下”“上”“上”

我的代码是这样的

 B[ which(A %in% B$x), ]$y

但我明白了

[1] "上" "下" NA NA

修复我的代码的最短方法是什么?

【问题讨论】:

  • B[A, "y"]B$y[A]
  • B[match(A, B$x), "y"]
  • 谢谢! @GregorThomas
  • @Roland,这也是其他解决方案!谢谢!
  • 那是因为我的方法并没有像@GregorThomas 那样对B$x 做出如此强烈的假设。

标签: r dataframe vector indexing


【解决方案1】:

两种思考方式:

您想要By 列的A 索引元素 - 所以用$ 提取y 列,然后用[ 应用索引A

B$y[A]

或者,你想要BA索引行,而你只关心y列,使用data[rows, columns]的标准数据框索引:

B[A, "y"]

【讨论】:

    【解决方案2】:

    您可以使用命名向量:

    unname(c("1" = "up", "2" = "down")[A])
    [1] "up"   "down" "up"   "up" 
    

    【讨论】:

    • 如果您向 OP 展示如何从其输入构造命名向量,这将是一个更强有力的答案 - 大概这是一个最小的说明性示例,它们可能有更多 Ay 值.
    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多