下面描述的代碼無法復制,因為它呼叫了我創建的一系列函式,我需要獲取一個矩陣陣列(對于函式最外層回圈參考的每個場景,1 個,場景是一個包含以下組合的表5 個變數),如以下陣列:
matrix_classification
var1 var2 var3 var4 var5
[1,] "OC" "OC" "IC" "IC" "IC"
[2,] "OC" "OC" "IC" "IC" "IC"
[3,] "OC" "IC" "IC" "IC" "IC"
[4,] "OC" "IC" "IC" "IC" "IC"
[5,] "OC" "IC" "IC" "IC" "IC"
我無法弄清楚我的錯誤是什么,因為該函式報告了
Error in matrix_classification[, , k] <- cbind(var1, var2, var3, var4, :
incorrect number of subscripts
下面是函式:
function_classification<-function(n){
matrix_classification <- array()
for (k in nrow(scenario_1)){
x1=rnorm(n) scenario_1[k,1]
x4=rnorm(n) scenario_1[k,4]
x2=x1*p12 std_e2*rnorm(n) scenario_1[k,2]
x3=x1*p13 x4*p43 std_e3*rnorm(n) scenario_1[k,3]
x5=x2*p25 x3*p35 std_e5*rnorm(n) scenario_1[k,5]
x1<-as.data.frame(x1);x1
var1<-vector()
for(i in x1[,]){
marg<-function_marginal("X1","T1",i)
marginali<-marg$marginals$T1
names(marginali)<-c("IC","OC")
if(marginali["OC"]>0.5){
var1<-append(var1,"OC")
} else{
var1<-append(var1,"IC")
}
}
x2<-as.data.frame(x2);x2
var2<-vector()
for(i in x2[,]){
marg<-function_marginal("X2","T2",i)
marginali<-marg$marginals$T2
names(marginali)<-c("OC","IC")
if(marginali["OC"]>0.5){
var2<-append(var2,"OC")
} else{
var2<-append(var2,"IC")
}
}
x3<-as.data.frame(x3);x3
var3<-vector()
for(i in x3[,]){
marg<-function_marginal("X3","T3",i)
marginali<-marg$marginals$T3
names(marginali)<-c("IC","OC")
if(marginali["OC"]>0.5){
var3<-append(var3,"OC")
} else{
var3<-append(var3,"IC")
}
}
x4<-as.data.frame(x4);x4
var4<-vector()
for(i in x4[,]){
marg<-function_marginal("X4","T4",i)
marginali<-marg$marginals$T4
names(marginali)<-c("IC","OC")
if(marginali["OC"]>0.5){
var4<-append(var4,"OC")
} else{
var4<-append(var4,"IC")
}
}
x5<-as.data.frame(x5);x5
var5<-vector()
for(i in x5[,]){
marg<-function_marginal("X5","T5",i)
marginali<-marg$marginals$T5
names(marginali)<-c("IC","OC")
if(marginali["OC"]>0.5){
var5<-append(var5,"OC")
} else{
var5<-append(var5,"IC")
}
}
matrix_classification[,,k]<-cbind(var1,var2,var3,var4,var5)
colnames(matrix_classification[,,k])<-c("var1","var2","var3","var4","var5")
matrix_classification[,,k]<-as.matrix(matrix_classification[,,k])
}
return(matrix_classification)
}
我會用 sapply 函式呼叫這個函式,這樣我就可以獲得 N 個單位樣本和 N 個大小為 N 的樣本
dati_prova<-sapply(rep(1,5), function(x) function_classification(x))
uj5u.com熱心網友回復:
如果沒有可重復的作業示例,很難給出具體答案,因為您的函式包含外部定義的變數。但是,錯誤的來源很清楚。當您創建一個空陣列時,array()它有一個固定維度:
matrix_classification <- array()
dim(matrix_classification)
#> [1] 1
如果你嘗試寫入它的第三維,你會得到一個錯誤:
k <- 1
matrix_classification[, , k] <- "x"
#> Error in matrix_classification[, , k] <- "x": incorrect number of subscripts
如果你想寫入一個陣列,你應該首先定義它的維度。例如,以下創建一個空的 5 x 5 x 5 陣列:
matrix_classification <- array("", dim = c(5, 5, 5))
dim(matrix_classification)
#> [1] 5 5 5
如果我們想將矩陣寫入第k 個切片,我們可以這樣做:
matrix_classification[, , k] <- matrix(sample(letters, 25), nrow = 5)
matrix_classification[,,1]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] "a" "d" "k" "t" "c"
#> [2,] "f" "b" "n" "m" "s"
#> [3,] "u" "q" "y" "o" "j"
#> [4,] "l" "g" "h" "w" "v"
#> [5,] "r" "i" "e" "p" "z"
由reprex 包創建于 2022-03-06 (v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/438547.html
上一篇:看不懂Python的兩行代碼
