Добавление результатов в вектор в цикле for в R - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу найти имена столбцов в наборе данных 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 голосов
/ 05 ноября 2018

Вот решение, которое я придумала, если правильно поняла проблему. Я создал несколько примеров данных, чтобы показать процесс.

##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, потому что иначе он вернет список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...