如何从查找特定字符的矩阵中提取一系列行?

时间:2017-10-22 16:16:23

标签: r matrix extract

如果我有这种类型的矩阵:

If V1= "Marcos" & V1="Felipe"

我们的想法是使用列V1创建一个相同类型的新矩阵,例如从第二行到第四行提取:

V1...................V2
"Marcos".............2 
"Lucas"..............3
"Juan"...............4
"Felipe".............5
然后从马科斯到菲利普展示:

{{1}}

2 个答案:

答案 0 :(得分:1)

我们可以使用match获取索引,然后使用:获取序列

i1 <- with(df1, match(c("Marcos", "Felipe"), V1))
df1[i1[1]:i1[2],]
#      V1 V2
#2 Marcos  2
#3  Lucas  3
#4   Juan  4
#5 Felipe  5

这里假设没有重复的名称。此外,%in%是非特定的,因为它没有区分名称。

答案 1 :(得分:1)

如果其中一个名称在V1中不止一次,则match将仅返回第一个值。但它应该归还所有。另见最后答案中的改编示例。您可以使用whichrange来解决此问题。

使用:

r <- which(df$V1 %in% c("Marcos","Felipe"))
df[Reduce(':', range(r)),]

你得到:

      V1 V2
2 Marcos  2
3  Lucas  3
4 Felipe  5
5   Juan  4
6 Felipe  5

改编示例:

df <- read.table(text="Mateo 1
Marcos 2 
Lucas 3
Felipe 5
Juan 4
Felipe 5
Federicus 6", header=FALSE)