2013-11-07 3 views
0

Итак, вот что я хотел бы сделать:Динамическое обновление кадра данных из подмножества в R

df <- data.frame(a=1:6, b=1:6) 
ss <- magicSubset(df, a <= 3) 

ss$b <- 100 

df$b # should be c(100,100,100,4,5,6) 

Есть ли что-то подобное в R, или в пакете? Я думаю, это было бы не слишком сложно реализовать ... есть ли причины, это плохая идея?

+0

Можете ли вы объяснить, почему вам это нужно? Возможно, есть еще один вариант для достижения того, чего вы хотите в конце всего. – eddi

+1

Если для параметра data.table вместо параметра data.frame используется опция data.table, обычно не выполняется копирование, если явно не запрошено -> [ПРИМЕР] (http://stackoverflow.com/questions/8030452/pass -by-reference-the-operator-in-the-data-table-package) – digEmAll

+0

Вот логическое обоснование: я создаю структуру, в которой пользователям будет регулярно обновляться одна конкретная строка из базы данных, в функциях, которые они определяют сами , Если бы я мог «передать» эту строку функции, им будет намного проще написать 'obj $ field <- value', чем' objects $ field [objects $ id == obj $ id] <- value'. Я посмотрю на data.table, может быть, так оно и есть! – David

ответ

2

Вы можете подмножество df$b и присвоить ему значение:

df$b[df$a <= 3] <- 100 
+0

Я получаю это, но я хотел бы создать объект, который я могу передать, и который обновляет его «родительский», когда он обновляется. – David

+1

@ David R делает копии всего, нет простого способа получить поведение, подобное указателю, с помощью R-переменных, например, в Python. –

+0

@David Это говорит о том, что, возможно, классы S4 или Reference могут предоставить больше традиционной объектно-ориентированной структуры, которая будет служить вашим целям. – joran

Смежные вопросы