Как убрать числа в векторе 1 из чисел в векторе 2 - PullRequest
0 голосов
/ 27 июня 2018

Введите:

temp_total_time <- c(1.24, 1, 54 , 1.89, 2.45, 34, 54, 6.91, 7.33, 85.42, 1.19)

break_time_vals <- c(2.24, 3.52, 1.24, 5,89, 1.89, 7.33, 17.54)

выход

opr_time_vals <- c(2.24, 3.52, 5.89, 17.54)

Код пробовал:

  my_list <- list(temp_total_time,break_time_vals)
  opr_time_vals <- sapply(my_list,remove_nums)

Мне нужен код, который выполняется очень быстро, потому что у меня есть векторы с длиной около 350000, 10000

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Я нашел решение сейчас ..

 temp_total_time <- trimws(temp_total_time,"both")

 break_time_vals <- trimws(break_time_vals,"both")

 opr_time temp_total_time[!temp_total_time %in% break_time_vals]
0 голосов
/ 27 июня 2018

Вы ищете функцию setdiff:

#R version 3.3.2 

temp_total_time <- c(1.24,1,54,1.89,2.45,34,54,6.91,7.33,85.42,1.19)

break_time_vals <- c(2.24,3.52,1.24,5,89,1.89,7.33,17.54)

setdiff(break_time_vals,temp_total_time)

[1]  2.24  3.52  5.00 89.00 17.54

вот Демонстрация

0 голосов
/ 27 июня 2018

Возможно, есть более быстрые способы ... но это работает.

zz <- break_time_vals[!(break_time_vals %in% temp_total_time)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...