R基于向量选择数据帧的列
我有一个示例数据框,如下所示R基于向量选择数据帧的列,r,plyr,apply,R,Plyr,Apply,我有一个示例数据框,如下所示 > 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列
> 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"
[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)]
结果
您可以使用矩阵“切片”数据帧:
y=data.frame(1:5,c(1,2,2,1,1))
x[2:3][as.matrix(y)]
结果:
[1] "a" "n" "o" "d" "e"
[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)]
结果