【问题标题】:R Selecting columns of a data frame based on a vectorR根据向量选择数据框的列
【发布时间】:2012-09-07 17:42:00
【问题描述】:

我有一个示例数据框,如下所示。

> x=data.frame(id=1:5,c1=letters[1:5],c2=letters[13:17])
> x
  id c1 c2
1  1  a  m
2  2  b  n
3  3  c  o
4  4  d  p
5  5  e  q

我想从这个数据框中创建一个向量,它根据另一个向量为每一行选择不同的列。所以如果那个向量是

> vars
[1] 1 2 2 1 1 
> 

我想要 x 中的第一行,第 1 列,x 中的第二行,第 2 列,依此类推。所以预期的输出向量(或数据帧)将是 如果向量

a n o d e

如果数据框

id V1
 1  a
 2  n
 3  o
 4  d
 5  e

任何帮助,非常感谢。

【问题讨论】:

    标签: r plyr apply


    【解决方案1】:

    您可以使用矩阵“切片”数据框:

    y=data.frame(1:5,c(1,2,2,1,1))
    x[2:3][as.matrix(y)]
    

    结果:

    [1] "a" "n" "o" "d" "e"
    

    让我们通过创建一个函数来概括这一点

    selector=function(x)matrix(c(seq_along(x),x),ncol=2)
    

    请注意,在开始时有一列要被忽略,因此将 1 添加到您的选择向量 v

    v=c(1,2,2,1,1)
    x[selector(v+1)]
    

    结果

    [1] "a" "n" "o" "d" "e"
    

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      相关资源
      最近更新 更多