根据名称的向量获取列的indeces(以R表示)

时间:2019-03-21 18:52:09

标签: r string

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

我们假设:

> 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)

在不进行循环的情况下提供帮助的任何帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)

希望有帮助