0

由于我想将多个数据帧绑定在一起以检索一个大帧,因此我使用 mget(ls(pattern="")) 按模式绑定行。这通常工作得很好,除了以下示例:

library(dplyr)

`Accuracy 1` <- data.frame (Product  = "10001",
                            Bias = 0.4,
                            Variance = 0.1,
                            Disturbance = 0.5)

`Accuracy 2` <-  data.frame (Product  = "20001",
                               Bias = 0.1,
                               Variance = 0.1,
                               Disturbance = 0.8)

`Accuracy_3` <-  data.frame (Product  = "30001",
                             x = "test",
                             y = 0.1,
                             z = 0.2,
                             w = "why")

acc_output <-  mget(ls(pattern="Accuracy *")) %>%
  bind_rows()

如您所见,其中一个数据框 (Accuracy_3) 显示不同的名称模式。我希望当我在 Accuracy 之后用空格定义模式时,这个框架会被忽略,只有前两个框架​​会绑定在一起,

然而,这不是这里发生的事情。即使我用空格定义模式,也可以为带有下划线的模式完成绑定。为什么会发生这种情况,我该如何避免这种情况?

4

1 回答 1

3

中的模式ls是一个正则表达式(参见例如https://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html)。

在您的模式中Accuracy **被解释为前一个字符(即空格)的零次或多次出现。由于Accuracy_有零个空格,它与模式匹配。

您可以改为使用Accuracy or Accuracy [1-2]

于 2021-11-05T10:08:44.843 回答