簡體   English   中英

R根據向量選擇數據框的列

[英]R Selecting columns of a data frame based on a vector

我有一個示例數據框,如下所示。

> 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

任何幫助,不勝感激。

您可以使用矩陣“切片”數據幀:

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)

請注意,一開始會忽略一列,因此請在選擇向量v中加1

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

結果

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM