一个R函数,它沿列查找多个对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个R函数,它沿列查找多个对象相关的知识,希望对你有一定的参考价值。

这似乎是一个简单的问题,可能是它,但我无法找到一个简单的解决方案(它也可能是重复的,但我找不到任何东西)。

假设我有一个字符串数组:

objects = c("apple","banana","cranberry");

我想从水果列中提取每个对象的位置,以获取数据框的其他列中包含的值。

df = data.frame(fruits=c("banana","watermelon","orange","pineapple","apple","strawberry","pear","lemon","grapefruit","peach","apricot","cranberry"),asia=c(1,3,2,1,3,1,2,3,1,2,2,1),america=c(1,2,3,2,3,1,3,2,2,1,3,2));

是否有类似于哪个()或grep()可用于检索位置whitout必须使用这样的for循环:

position = matrix(nrow=length(objects),ncol=2);
i = 1;
for(obj in objects){
    position[i,] = unlist(df[which(df$fruit==obj),-1]);
    i = i + 1;
}
答案

我们可以使用match

df[match(objects, df$fruits), ]
#      fruits asia america
#5      apple    3       3
#1     banana    1       1
#12 cranberry    1       2

match(objects, df$fruits)返回位置

# [1]  5  1 12
另一答案

您可以使用which%in获得所需的输出

which(df$fruits%in%objects)
另一答案

正如@李哲源和@AntoniosK所述,你也可以在%in%声明中使用which(),然后使用rownames()

rownames(df[which(df$fruits %in% objects),])
[1] "1"  "5"  "12"

以上是关于一个R函数,它沿列查找多个对象的主要内容,如果未能解决你的问题,请参考以下文章

如何将 r ggplot 图存储为 html 代码片段

如何编写 R 函数来查找数据框中的特定条件

是否有一个 R 函数可以测试多个指定对象的存在?

R语言apropos函数查找包含特定字符的函数find函数查找函数所在的位置实战

R用户定义函数,返回多个类型对象

在R函数中返回多个对象[重复]