我正在使用匹配运算符从单独的数据框中获取矩阵中出现的值。但是,生成的矩阵的值按照它们在数据框中出现的顺序排列,而不是按原始矩阵排列。有没有办法使用匹配运算符来保留原始矩阵的顺序?
这是一个简单的例子:
vec=c("b","a","c"); vec
df=data.frame(row.names=letters[1:5],values=1:5); df
df[rownames(df) %in% vec,1]
这会产生> [1] 1 2 3
这是顺序"a" "b" "c"
出现在数据框中。但是,我想生成>[1] 2 1 3
这是它们在原始向量中出现的顺序。
Thanks!
Use match
.
df[match(vec, rownames(df)), ]
# [1] 2 1 3
请注意,如果其中任一值有重复值vec
or rownames(df)
, match
可能不会按预期运行。
Edit:我刚刚意识到行名称索引将更简单、更优雅地解决您的问题:
df[vec, ]
# [1] 2 1 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)