如果我有这种类型的矩阵:
If V1= "Marcos" & V1="Felipe"
我们的想法是使用列V1创建一个相同类型的新矩阵,例如从第二行到第四行提取:
V1...................V2
"Marcos".............2
"Lucas"..............3
"Juan"...............4
"Felipe".............5
然后从马科斯到菲利普展示:
{{1}}
答案 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
将仅返回第一个值。但它应该归还所有。另见最后答案中的改编示例。您可以使用which
和range
来解决此问题。
使用:
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)