首页 > 解决方案 > 如何计算文件中行的频率

问题描述

我有以下 txt 文件:

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)

我得到的结果是:

在此处输入图像描述

结果是错误的。每条线的频率至少应为 1。此外,有一条线的频率为 2,int int0 = (-1790);但它的频率为零。我认为这个问题grep(lines[i], lines)

你能帮忙解决这个问题吗?

标签: r

解决方案


您可以使用table()

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

# sort to match original order
out <- out[match(lines,out$lines),]

推荐阅读