Фильтрация данных по количеству строк в скобках - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть следующие данные:

lines                                                                                    Freq
BrentOptimizer brentOptimizer0 = new BrentOptimizer(double0, double0);                    168
BrentOptimizer brentOptimizer1 = new BrentOptimizer(double0, double1, convergenceChecker0); 39
BrentOptimizer brentOptimizer0 = new BrentOptimizer(int1, double2);                         4
BrentOptimizer brentOptimizer3 = new BrentOptimizer(int3, double2, convergenceChecker1);    2
BrentOptimizer brentOptimizer0 = new BrentOptimizer(doubleArray0[6], int2);                 3
BrentOptimizer brentOptimizer1 = new BrentOptimizer(int2, double2, convergenceChecker0);    3

Я хотел бы получить данные только тех строк, которые содержат три строки в скобках. В этом случае нужно извлечь только три следующие строки:

lines                                                                                    Freq
BrentOptimizer brentOptimizer1 = new BrentOptimizer(double0, double1, convergenceChecker0); 39
BrentOptimizer brentOptimizer3 = new BrentOptimizer(int3, double2, convergenceChecker1);    2
BrentOptimizer brentOptimizer1 = new BrentOptimizer(int2, double2, convergenceChecker0);    3

Я начал писать следующий скрипт, но не смог его завершить, потому что я не знаком с регулярным выражением:

  df <- read.csv("/home/adam/Desktop/data.csv")
  x <- gsub("[\\(\\)]", "", regmatches(df$lines, gregexpr("\\(.*?\\)", df$lines)))
  all <- data.frame()
  for(i in 1:5){
    if(length(x[i]) > 2){
      # retrieve the data and rbind it to all
    }
  }

Не могли бы вы помочь мне решить это?

1 Ответ

3 голосов
/ 06 ноября 2019

Как насчет попытки df[grepl("\\(.*,.*,.*\\)",df$lines),]?

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