3

假设我已经将一个 csv 文件加载到 R 中,其中包含两列(例如 A 列和 B 列),其中包含实际值条目。调用数据框 df。是否可以加快以下代码的速度:

dfm <- df[floor(A) = x & floor(B) = y,]
x <- 2
y <- 2
dfm

我希望会有类似于功能的东西,例如

dfm <- function(x,y) {df[floor(A) = x & floor(B) = y,]}

这样我就可以输入

非常感谢任何帮助。

4

1 回答 1

3

由于以下几个原因,现在编写的方式不起作用:

  1. 您需要在分配之前xy之前分配值dfm。换句话说,行x <- 2y <- 2必须dfm <- ...在行之前。
  2. R不知道什么AB是,即使您将它们放在包含它们的数据框的括号内。你需要写df$Adf$B
  3. =是赋值运算符,但您正在寻找逻辑运算符==。现在您的代码正在说“将值 x 分配给floor(A)”(这实际上没有意义)。您想告诉它“仅选择floor(A)等于 x 的行”,或者floor(A)==x.

所以你想要的是:

dfm.create <- function(x,y) {df[floor(df$A)==x & floor(df$B)==y,]}
dfm <- dfm.create(2,2)

请注意,如果您希望调用数据框dfm,则不想命名该函数dfm,否则您将不得不删除该函数以制作数据框。

于 2012-12-03T14:53:46.623 回答