Ich arbeite gerade an meiner Masterarbeit (Modell eines evolutionären Vertrauensspiels). Und ich habe ein folgendes Problem. Ich habe mehrere Arten von Investoren und Treuhändern, die gepaart sind, um das Vertrauensspiel zu spielen. Investoren und Treuhänder sind als Vektoren definiert. Ich möchte, dass mein Code (Trust Game) den (global definierten) Investor und Treuhänder benötigt. Sie spielen die Iteration des Trust-Spiels zusammen und dann werden die global definierten Variablen innerhalb des Function-Trust-Spiels aktualisiert. Ich möchte, dass es für jeden Investor \ Trustee funktioniert, der als Argument der Funktion Trustgame verwendet wird. Weißt du wie ich das programmieren könnte? Ich bin mir auch nicht sicher, ob es dir helfen wird, aber ich poste auch meinen Code.Zuweisen eines Wertes zur globalen Variable (und einem Argument einer Funktion aswell) R
#### defining trustees ####
# [1] honor\abuse
# [2] information about previous interaction - relevant to investors who buy the information
# [3] payoff
# [4] number of interactions
trustee1 <- c(1,0,0,0)
#### defining investors ####
# [1] buy\not buy
# [2-4] investment decision if buying information in case 1(TH), case 2(TA), case 3(NT)
# [5] aggregated payoff
# [6] number of interactions in one generation
investor1 <- c(1,1,1,1,0,0)
here is the code for the trust game
trustgame <- function(investor,trustee)
{ investordecision <- NULL
trusteedecision <- trustee[1]
investor[6] <- investor[6]+1
trustee[4] <- trustee[4]+1
if (investor[1]==0) investordecision <- investor[2]
if (investor[1]==1)
{ if (trustee[2]==1) investordecision <- investor[2]
if (trustee[2]==2) investordecision <- investor[3]
if (trustee[2]==3) investordecision <- investor[4]
if (trustee[2]==0) investordecision <- rbinom(1,1,0.5)
}
if (investordecision==1 && trustee[2]==1) trustee[2] <- 1
if (investordecision==1 && trustee[2]==0) trustee[2] <- 2
if (investordecision==0) trustee[2] <- 3
if (investordecision==1 && trusteedecision==1)
{trustee[3] <- trustee[3] +3
investor[5] <- investor[5] + 3 }
if (investordecision==1 && trusteedecision==0)
{trustee[3] <- trustee[3] +5
investor[5] <- investor[5] + 0 }
if (investordecision==0 && trusteedecision==0)
{trustee[3] <- trustee[3] +1
investor[5] <- investor[5] + 1 }
if (investordecision==0 && trusteedecision==1)
{trustee[3] <- trustee[3] +1
investor[5] <- investor[5] + 1 }
}
'<< -' wird eine globale Variable in einer Funktion ändern. Achtung. – cory
Ich weiß, aber ich habe mehrere Arten von beiden Treuhändern (trustee1, trustee2, ...) und Investoren (investor1, investor2, ...) und ich möchte diese Änderungen automatisch auf diejenigen durchführen, die derzeit als Argument verwendet werden die Funktion, da ich später eine große Simulation machen werde und ich nicht alles manuell eingeben möchte. – hed0r
'get' und' assign' mit dem 'envir' Argument? Wenn Sie erst einmal mit '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'anfangen, ist es ein gutes Zeichen, dass die Dinge schief laufen. – cory