Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
矩阵M1第C列中出现在第C列'中的访问因子;R中矩阵M2-的性质_R_Dataframe - Fatal编程技术网

矩阵M1第C列中出现在第C列'中的访问因子;R中矩阵M2-的性质

矩阵M1第C列中出现在第C列'中的访问因子;R中矩阵M2-的性质,r,dataframe,R,Dataframe,我有一个73335x2882数据框df,我想根据df$rs列的系数提取特定行。为了使我的问题可以理解,我创建了一个小型数据框u > rs = c("rs1","rs2","rs3","rs4","rs5") > m = matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),nrow=5) > u=data.frame(rs,m) > u rs X1 X2 X3 1 rs1 1 6 11 2 rs2 2 7 12 3 r

我有一个73335x2882数据框df,我想根据df$rs列的系数提取特定行。为了使我的问题可以理解,我创建了一个小型数据框u

> rs = c("rs1","rs2","rs3","rs4","rs5")
> m = matrix(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),nrow=5)
> u=data.frame(rs,m)
> u
 rs X1 X2 X3
 1 rs1  1  6 11
 2 rs2  2  7 12
 3 rs3  3  8 13
 4 rs4  4  9 14
 5 rs5  5 10 15
现在,我创建另一个数据帧w

> mat = matrix(c(1,2,3,4,5,6),nrow=2)
> rs = c("rs3","rs5")
> w = data.frame(rs, mat)
> w
  rs X1 X2 X3
1 rs3  1  3  5
2 rs5  2  4  6
我现在要做的是从u中提取所有行,其中u$rs包含在w$rs中。因此,我希望获得最终答案:

   rs X1 X2 X3
3 rs3  3  8 13
5 rs5  5 10 15
我尝试了以下方法,但没有成功:

> u[w$rs,]
   rs X1 X2 X3
1 rs1  1  6 11
2 rs2  2  7 12
我也试过了

> subset(u, rs == w$rs)
Error in Ops.factor(rs, w$rs) : level sets of factors are different
In addition: Warning message:
In is.na(e1) | is.na(e2) :
longer object length is not a multiple of shorter object length
我知道我可以使用apply(或循环)来验证u$rs的每个因子是否是w$rs的一个元素。但我对此不满意,因为这将非常缓慢

有人对如何有效地实施这一点有想法吗

非常感谢。

您可以试试

u[u$rs %in% w$rs, ]
#    rs X1 X2 X3
# 3 rs3  3  8 13
# 5 rs5  5 10 15

或者使用
data.table
,我们将'u'转换为'data.table',并与
'rs'上的'w'
的'rs'列联接

library(data.table)#v1.9.6+
setDT(u)[w['rs'], on='rs']
#    rs X1 X2 X3
#1: rs3  3  8 13
#2: rs5  5 10 15