将结果附加到R中的for循环中的vector

时间:2018-11-05 18:11:54

标签: r function append

我想在数据集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

1 个答案:

答案 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,因为否则它将返回一个列表。