2015-01-17 5 views
-1

Может ли кто-нибудь объяснить пример ниже? Поэтому я пытался рассчитать потерю веса. Тем не менее, у меня была опечатка на строке 2 при назначении конечного веса. Итак, в строке 6 я переназначил конечное значение andy_loss. Я подумал, как только я это сделаю, тогда вектор andy_loss автоматически обновит его значение, но этого не произошло. Я предполагаю, что если функция andy_loss является функцией, она обновится сама? Но может ли кто-нибудь объяснить мне принципиально, как компьютер хранит и возвращает значения в среде R?R присваивает значения вектору

спасибо.

> andy_start <- andy[1,"Weight"] 
> andy_end <- andy[1,"Weight"] 
> andy_loss<- andy_start - andy_end 
> andy_loss 
[1] 0 
> andy_end <- andy[30,"Weight"] 
> andy_loss 
[1] 0 
> andy_loss<- andy_start - andy_end 
> andy_loss 
[1] 5 
+0

Вы используете 'andy_loss' как переменную, поэтому он сохраняет значение. Если вы хотите, чтобы 'andy_loss' _recalculate_ разницу каждый раз, когда он вызывается, вы можете определить его как функцию, например. 'andy_loss <- function() andy_start - andy_end', а затем используйте' andy_loss() ', где вам нужна разница. –

ответ

2

В этом случае переменные, хранящие данные andy_start и andy_end, не связаны динамически. Их можно рассматривать как отдельные хранилища для данных, которые вы должны обновлять по одному. Когда вы делаете andy_start-andy_end, вы создаете новый вектор, который сохраняет результат. Ни один из этих элементов не связан динамически.

Если у вас есть что-то подобное в электронной таблице или базе данных, результаты, вероятно, будут динамически связаны, поэтому, если вы обновите andy_end, он перейдет в andy_loss. Это ключевое различие между реляционной базой данных и статическим хранилищем данных, например текстовым файлом.

+1

Ничего себе, хорошая работа, выясняя, в чем вопрос! – Aaron

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