Как посчитать частоту строк в файле - PullRequest
1 голос
/ 05 ноября 2019

У меня есть следующий текстовый файл:

Test-case: 1 --------------------
int int0 = (-1790);
String string0 = "14_d4BWMJqn";
MethodVisitor methodVisitor0 = mock(MethodVisitor.class, new ViolatedAssumptionAnswer());
MethodAdapter methodAdapter0 = new MethodAdapter(methodVisitor0);
int int1 = 4073;
Label label0 = new Label();
methodAdapter0.visitLabel(label0);
String string1 = "H*";
String string2 = "5^?5P\"#V\"c<_yB";
methodAdapter0.visitFieldInsn(int1, string0, string1, string2);
LocalVariablesSorter localVariablesSorter0 = new LocalVariablesSorter(int0, string0, methodAdapter0);
localVariablesSorter0.visitVarInsn(int0, int0);
Attribute attribute0 = mock(Attribute.class, new ViolatedAssumptionAnswer());
methodAdapter0.visitAttribute(attribute0);
int int2 = (-2549);
int int3 = 4149;
localVariablesSorter0.visitVarInsn(int2, int3);
int int0 = (-1790);
localVariablesSorter0.visitMaxs(int2, int2);

Я бы хотел посчитать, сколько каждой строки появляется в текстовом файле (вхождения каждой строки в файле). Для этого:

  con = file("/home/adam/Desktop/Trash/qwe.txt", "r")
  lines <- readLines(con)
  data_per_class1 <- data.frame(Statement = NA, Freq = NA)
  x <- 1
  for(i in 1:length(lines)){
    frq <- length(grep(lines[i], lines))
    data_per_class1[x,] <- c(lines[i], frq)
    x <- x + 1
  }
  print(data_per_class1)
  close(con)

Я получил следующие результаты:

enter image description here

Результаты неверные. Каждая строка должна, по крайней мере, иметь частоту 1. Кроме того, есть одна линия, которая имеет частоту 2, равную int int0 = (-1790);, но ей дается нулевая частота. Я думаю, что проблема с этим grep(lines[i], lines)

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

1 Ответ

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

Вы можете использовать table()

lines <- readLines(con)
out <- data.frame(table(lines))

# sort to match original order
out <- out[match(lines,out$lines),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...