[英]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.