我有一个带有命名列的数据框。
我们假设:
> 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)
如何在没有循环的情况下执行此操作的任何帮助将不胜感激。
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
您可以使用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)
希望能帮助到你