根据名称向量获取列索引(在R中)

问题描述 投票:0回答:2

我有一个带有命名列的数据框。

我们假设:

> colnames(df)
[1] "apple"   "orange"   "banana"   "pear"   "melon"

我想获得与向量中的字符串匹配的列的索引。

> myNames = c("apple","pear")
> foo(myNames,colnames(df))
[1] 1 4

最初,which()%in%浮现在脑海中,但由于输入是两个向量,因此在我的实现中都没有起作用;为完整起见的例子:

> which(colnames(df) == myNames )
> myNames %in% colnames(df)

如何在没有循环的情况下执行此操作的任何帮助将不胜感激。

r string
2个回答
3
投票

which%in%是一种选择

x <- c("apple", "orange", "banana", "pear", "melon")
myNames = c("apple","pear")

which(x %in% myNames)
[1] 1 4

另一个是match

match(myNames, x)
[1] 1 4

0
投票

您可以使用grep逐个查找它们,如下所示:

grep("apple",df)

或使用此:

colno=function(vector,df){
  result=c()
  a=length(vector)

  for(i in 1:a){
    result[i]=grep(vector[i],colnames(df))}
  return(result)}

然后称之为,

colno(myNames,df)

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.