我想在数据集x中找到列名,如果列名在数据框y中,我想将行索引附加到向量上:
store <- c() # vector
check_same_colnames<-function(x,y) {
for (i in colnames(x)) {
if (i %in% colnames(y)) {
store<-append(store,which(colnames(x) == i))
print(i)
}
}
}
但是运行此命令后,商店将获得NULL
答案 0 :(得分:0)
这是我想出的解决方案,如果我正确理解该问题。我创建了一些示例数据来显示该过程。
##Creating fake data
library(tidyverse)
set.seed(2)
x <- bind_cols(lapply(1:7, function(i)sample(1:1000,100)))
y <- bind_cols(lapply(1:7, function(i)sample(1:1000,100)))
##Changing column names of second dataset
colnames(y) <- c("V1", "V2","V33", "V4", "V5", "V66","V7")
##Setting up a combination of regex and sapply
columns_found <- unlist(sapply(colnames(x), function(i)grep(paste0("^",i,"$"),colnames(y),value = FALSE)))
基本上,最后一行所做的是它使用sapply传递一个函数,该函数检查y列中是否存在正则表达式匹配项。我使用unlist,因为否则它将返回一个列表。