использование " на " параметр в данных.таблица


Я учусь работать с R и точнее данные.пакет таблицы.Теперь я узнал, что иногда я пытаюсь интуитивно решать вещи, которые не работают с данными.таблица.В частности, когда я пытаюсь применить ту же операцию для каждой строки данных.таблицы и часто с помощью этой операции для заполнения нового столбца или изменить существующую.Например я создал следующую команду, чтобы применить на стол, я вставил ниже тоже. В начале столбце C не существует, но я создал, что, применяя правильный метод.

DT[,C:=ifelse(nchar(unlist(strsplit(B,"-"))[1]) == 4,paste("0",unlist(strsplit(B,"-"))[1],sep=""),unlist(strsplit(B,"-"))[1])]

Но применяя эту команду только дает мне значение 10:00 в каждой строке с..таблица:

Id          A           B         C 1         41 10:00-10:15     10:00 2         38   9:15-9:30     09:15 3         39   9:30-9:45     09:30 4         40  9:45-10:00     09:45 5         57 14:00-14:15     14:00 6         59 14:30-14:45     14:30 7         58 14:15-14:30     14:15 8         56 13:45-14:00     13:45 9         91 22:30-22:45     22:3010         89 22:00-22:15     22:00
by

Потом где-то (я, к сожалению потерял ссылку) на сайте StackOverflow я нашел кто-то делает то же самое, но с использованием параметра. Это сделало бы мою команду:"

DT[,C:=ifelse(nchar(unlist(strsplit(B,"-"))[1]) == 4,paste("0",unlist(strsplit(B,"-"))[1],sep=""),unlist(strsplit(B,"-"))[1]),by=1:nrow(DT)]

Это дает мне правильные результаты. В основном же, как:

for (row in 1:nrow(DT)){  DT[row,C:=ifelse(nchar(unlist(strsplit(DT[row,B],"-"))[1]) == 4,paste("0",unlist(strsplit(DT[row,B],"-"))[1],sep=""),unlist(strsplit(DT[row,B],"-"))[1])]}
by

Это смутило меня, потому что прочитав страницу справки для сведения.таблица об этом говорит:

A single unquoted column name, a list() of expressions of column names, a single character string containing comma separated column names (where spaces are significant since column names may contain spaces even at the start or end), or a character vector of column names.

by

Так что это заставило меня подумать только, чтобы указать столбцы, но здесь я использую его для строк... может кто-то объяснит, что происходит?

Дополнительный вопрос после комментарии:когда я использую следующий код

test <- data.table(matrix(1:10))test[,V2:=V1+2]# V1 V2#  1  3#  2  4#  3  5#  4  6#  5  7#  6  8#  7  9#  8 10#  9 11# 10 12

Я получить ожидаемый результат. В2 содержит значение В1 увеличена на 2.Почему же метод не работает в случае мой первоначальный код выше, где я задаю данных.таблица разделить каждое значение из столбца B и поместить результирующую строку в новый столбец.