2011-09-18 84 views
4

你[R鄉親新手問題:更新變量值重新定義後

情景:

  1. 我定義變量A:A =數字

  2. 我定義了基於A其它變量:B =數字* A

  3. 我改變了A的定義:A =不同的數字

[Q]。我如何讓R自動更新B的值,而無需重新定義它?

例如: 1.A = 1000; 2. B = A/10; (B = 100) 3.改變了我的想法:畢竟A = 1100;

>A 
1100 
>B 
100 

乙方應爲110(10分之1100),但其價值尚未更新 - 因此它讀取100不需要重新定義B,我怎麼可以更新它的價值?

謝謝!

+3

@ G.Grothendieck回答您的問題很好下面,但我建議你也考慮改變你的成語 - 雖然它很方便(並且類似於電子表格和像Sage或Mathematica這樣的象徵性數學程序),但它對R來說是非慣用的。 –

+0

同意@Bolker,但另一個方法是在援助中「重放」以前的計算的IDE,如emacs/ess或RStudio。 –

回答

2

你(在第二表達以及可能的 「號碼」)的提議進行B A的功能

A=10 
B <- function(Number=3.5) { A*Number } 
B() 
# [1] 35 
A <- 15 
B() 
# [1] 52.5 
6

試試這個:

A <- 1000 
makeActiveBinding("B", function() A/10, .GlobalEnv) 
B 
## [1] 100 
A <- 1100 
B 
## [1] 110