data.table中的内联ifelse赋值

时间:2015-10-29 10:27:37

标签: r data.table

让我们给出以下数据集:

library('data.table')

set.seed(1234)
DT       <- data.table(x = LETTERS[1:10], y =sample(10))
my.rows  <- sample(1:dim(DT)[1], 3)

我想在数据集中添加一个新列,这样,只要数据集的行与my.rows给出的行号匹配,就会填充条目,例如,true,否则为false。 / p>

我有DT[my.rows, z:= "true"],它给出了

head(DT)
   x y    z
1: A 2   NA
2: B 6   NA
3: C 5 true 
4: D 8   NA
5: E 9 true 
6: F 4   NA

但我不知道如何同时自动填充else条件。我想我应该使用某种内联ifelse,但我缺乏正确的语法。

2 个答案:

答案 0 :(得分:2)

我们可以使用%in%将'my.rows'与行序列进行比较,以创建逻辑向量并指定(:=)它来创建'z'列。

 DT[, z:= 1:.N %in% my.rows ]

或者另一种选择是将'z'创建为'FALSE'列,使用'my.rows'作为'i',我们将'z'中对应'i'的元素指定为'TRUE'

 DT[, z:= FALSE][my.rows, z:= TRUE]

答案 1 :(得分:0)

       public function download() {

       $this->viewClass = 'Media'; 

        $params = array(
        'id'        => 'article.pdf',
        'name'      => 'article',
        'download'  => true,
        'extension' => 'pdf',
        'path'      =>  WWW_ROOT . DS . 'files' . DS 
    );

 $this->set($params);
}