我正在嘗試構建一個決策表。例如,在時間3時,我必須在時間t = 1和時間t = 2時採取以前的結果,以便在時間3做出我的決定。決策表將會非常大,所以我正在考慮一種有效的方法來做它通過構建一個函數。例如在時間3:以動態方式擴展條件
rm(list=ls()) # clear memory
names <- c("a","b","c","d","e","f","g","h","i","j","k50","l50","m50","n50","o50")
proba <- c(1,1,1,1,1,1,1,1,1,1,0.5,0.5,0.5,0.5,0.5)
need <- 4
re <- 0.5
w <- 1000000000
# t1
t1 <- as.integer(names %in% (sample(names,need,prob=proba,replace=F)))
# t2
t2 <- rep(t1)
# t3
proba3 <- ifelse(t2==1,proba*re,proba)
t3 <- as.integer(names %in% (sample(names,need,prob=proba3,replace=F)))
現在表將是大直到與proba7 T = 7這需要條件從t = 1到t = 6。在t = 7之後,爲了做出決定,總是需要6個以前的結果加上隨機部分的概率。換句話說,ifelse必須是動態的,以便以後可以調用它。我一直在嘗試像
probF <- function(a){
test <- ifelse(paste0("t",a,sep="")==1,proba*re,proba)
return(test)
}
test <- probF(2)
但有一個錯誤,因爲我只有一個值,而不是一個向量。我知道這看起來複雜
對於由一個人所要求的條件(我知道這是不太好寫的):
proba7 <- ifelse(t2==1 & t3==1 & t4==0 & t5==0 & t6==0,proba,
ifelse(t2==1 & t3==0 & t4==0 & t5==1 & t6==1,proba*re,
ifelse(t2==1 & t3==0 & t4==0 & t5==0 & t6==1, w,
ifelse(t2==0 & t3==1 & t4==1 & t5==0 & t6==0,proba,
ifelse(t2==0 & t3==1 & t4==1 & t5==1 & t6==0,0,
ifelse(t2==0 & t3==0 & t4==1 & t5==1 & t6==1,0,
ifelse(t2==0 & t3==0 & t4==1 & t5==1 &t6==0,0,
ifelse(t2==0 & t3==0 & t4==0 & t5==1 & t6==1, proba*re,
ifelse(t2==0 & t3==0 & t4==0 & t5==0 & t6==1,w,proba)))))))))
t7 <- as.integer(names %in% (sample(names,need,prob=proba7,replace=F)))
聽起來很糟糕的方法來解決這個問題,因此這個問題似乎是[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你想做什麼 ? – Tensibai
我正在做一個決策表。然而,時間t的決定取決於給定加上隨機效應的t-6到t-1的先前決定。但你是對的我的問題不是很清楚我要更新它 – richpiana
@Tensibai我編輯了我的所有問題,以便更清楚,這有幫助嗎? – richpiana