捕获表达式中对象的更改

时间:2016-03-11 11:12:38

标签: r

有没有办法捕获对象上执行的所有操作? 我想将新列添加到iris并将代码保存到某个地方,这将生成附加版本。

> iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa

> iris2 = iris
> iris2$IsSetosa = ifelse(iris$Species == "setosa", 1, 0)
> iris2$IsSetosa 
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[112] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[149] 0 0
> head(iris2)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species IsSetosa
1          5.1         3.5          1.4         0.2  setosa        1
2          4.9         3.0          1.4         0.2  setosa        1
3          4.7         3.2          1.3         0.2  setosa        1
4          4.6         3.1          1.5         0.2  setosa        1
5          5.0         3.6          1.4         0.2  setosa        1
6          5.4         3.9          1.7         0.4  setosa        1

我正在寻找一种捕获和存储ifelse(iris$Species == "setosa", 1, 0)表达式的方法。因此我可以轻松复制iris2。换句话说,我正在寻找像对象的版本控制,但以自动方式。因此,应该记录对象上执行的每个更改,并且可以复制。

为了简化问题,我不希望任何依赖于外部对象的更改。这意味着所有更改都基于自己的数据和/或一些提供的常量。

有一个包track可以进行更改检测并将它们保存到磁盘。我正在寻找code-generator这样的变化。

dplyrtbl对象使用惰性求值,我假设存储所有表达式,如果需要,将转换为SQL调用。

0 个答案:

没有答案