R语言报错 X必需是阵列,而且至少得有两个维度

R语言报错'x'必需是阵列,而且至少得有两个维度
Data<-read.csv("SPRP Data_W 2.csv",header=T)
library(readxl)
regions<-read_xlsx("2015 choume 7 regions.xlsx", sheet = 2)
## region dummy
Zone<-Data[,1:31]

Region_data<-data.frame(Zone$I_ID.558I)
names(Region_data)<-"ID"
for (i in 2:31) {
  zone<-Zone[,i]
  c1<-zone %in% regions$region1
  c2<-zone %in% regions$region2
  c3<-zone %in% regions$region3
  c4<-zone %in% regions$region4
  c5<-zone %in% regions$region5
  c6<-zone %in% regions$region6
  c7<-zone %in% regions$region7
  c_data<-data.frame(c1,c2,c3,c4,c5,c6,c7)
  c_data<-c_data +0
  region_n<-paste("region", i-1,sep = "")
  name_c<-paste(region_n,"_", 1:7,sep = "")
  names(c_data)<-name_c
  Region_data<-cbind(Region_data,c_data)
}



##### parameters ###
hh<-nrow(Data)##number of observations
ch<-7  ## number of alternatives
##parameter name
Pname0<-c("HP_L","HP_M","HP_H","AP_L","AP_M","AP_H","DHP","AP","AHI","PD","Aa","OD","Urban","RVR","SVR","PF","ER","PFD","SD","LFD","DI","LS") 
##produce variables
n<-length(Pname0)
b0<-rep(0,n)

Pname1<-as.data.frame(matrix(Pname0,nrow=1))
names(Pname1)<-Pname0


##log likelihood of Logit model
fr <- function(x) {
  ##parameter definition
  ##parameter definition
  for(i in 1:n){
    Pname1[,i]<-x[i]
  }
  
  LL=0
  
  ##utility function
  attach(Pname1)
  v<-list()
  for(i in 1:30){
    
    v[[i]]<- HP_L*Data$LID*Data[,which(names(Data)==paste("AveP_hous", i,sep = ""))] +
             HP_M*Data$MID*Data[,which(names(Data)==paste("AveP_hous", i,sep = ""))] +
             HP_H*Data$HID*Data[,which(names(Data)==paste("AveP_hous", i,sep = ""))] +
             AP_L*Data$LID*Data[,which(names(Data)==paste("AveP_man", i,sep = ""))] +
             AP_M*Data$MID*Data[,which(names(Data)==paste("AveP_man", i,sep = ""))] +
             AP_H*Data$HID*Data[,which(names(Data)==paste("AveP_man", i,sep = ""))] +
             DHP*Data[,which(names(Data)==paste("DHP", i,sep = ""))] +
             AP*Data[,which(names(Data)==paste("AP", i,sep = ""))] +
             AHI*Data[,which(names(Data)==paste("AHI", i,sep = ""))] +
             PD*Data[,which(names(Data)==paste("public.density", i,sep = ""))] +
             Aa*Data[,which(names(Data)==paste("average.age", i,sep = ""))] +
             OD*Data[,which(names(Data)==paste("owner.occupied.housing", i,sep = ""))] +
             Urban*Data[,which(names(Data)==paste("Urban", i,sep = ""))] +
             RVR*Data[,which(names(Data)==paste("rental.vancancy.rate", i,sep = ""))] +
             SVR*Data[,which(names(Data)==paste("sale.vancncy.rate", i,sep = ""))] +
             PF*Data[,which(names(Data)==paste("foreigner.percent", i,sep = ""))] +
             ER*Data[,which(names(Data)==paste("employment.rate", i,sep = ""))] +
             PFD*Data[,which(names(Data)==paste("public.density", i,sep = ""))] +
             SD*Data[,which(names(Data)==paste("school.density", i,sep = ""))] +
             LFD*Data[,which(names(Data)==paste("leisure.density", i,sep = ""))] +
             DI*Data[,which(names(Data)==paste("Diverstiy.Index", i,sep = ""))] +
             LS*(Data[,which(names(Data)==paste("c_Sflog", i,sep = ""))] +
                Data[,which(names(Data)==paste("s_Sflog", i,sep = ""))] +
                Data[,which(names(Data)==paste("h_Sflog", i,sep = ""))])
 }
  
  detach(Pname1) 
  
 
  ###### region
  region1<- Region_data$region1_1*exp(v[[1]]) + Region_data$region2_1*exp(v[[2]]) + Region_data$region3_1*exp(v[[3]]) + Region_data$region4_1*exp(v[[4]]) + 
    Region_data$region5_1*exp(v[[5]]) + Region_data$region6_1*exp(v[[6]]) + Region_data$region7_1*exp(v[[7]]) + Region_data$region8_1*exp(v[[8]]) +
    Region_data$region9_1*exp(v[[9]]) + Region_data$region10_1*exp(v[[10]]) + Region_data$region11_1*exp(v[[11]]) + Region_data$region12_1*exp(v[[12]]) + 
    Region_data$region13_1*exp(v[[13]]) + Region_data$region14_1*exp(v[[14]]) + Region_data$region15_1*exp(v[[15]]) + Region_data$region16_1*exp(v[[16]]) + 
    Region_data$region17_1*exp(v[[17]]) + Region_data$region18_1*exp(v[[18]]) + Region_data$region19_1*exp(v[[19]]) + Region_data$region20_1*exp(v[[20]])+
    Region_data$region21_1*exp(v[[21]]) + Region_data$region22_1*exp(v[[22]]) + Region_data$region23_1*exp(v[[23]]) + Region_data$region24_1*exp(v[[24]]) + 
    Region_data$region25_1*exp(v[[25]]) + Region_data$region26_1*exp(v[[26]]) + Region_data$region27_1*exp(v[[27]]) + Region_data$region28_1*exp(v[[28]]) +
    Region_data$region29_1*exp(v[[29]]) + Region_data$region30_1*exp(v[[30]])
  
  region2<- Region_data$region1_2*exp(v[[1]]) + Region_data$region2_2*exp(v[[2]]) + Region_data$region3_2*exp(v[[3]]) + Region_data$region4_2*exp(v[[4]]) + 
    Region_data$region5_2*exp(v[[5]]) + Region_data$region6_2*exp(v[[6]]) + Region_data$region7_2*exp(v[[7]]) + Region_data$region8_2*exp(v[[8]]) +
    Region_data$region9_2*exp(v[[9]]) + Region_data$region10_2*exp(v[[10]]) + Region_data$region11_2*exp(v[[11]]) + Region_data$region12_2*exp(v[[12]]) + 
    Region_data$region13_2*exp(v[[13]]) + Region_data$region14_2*exp(v[[14]]) + Region_data$region15_2*exp(v[[15]]) + Region_data$region16_2*exp(v[[16]]) + 
    Region_data$region17_2*exp(v[[17]]) + Region_data$region18_2*exp(v[[18]]) + Region_data$region19_2*exp(v[[19]]) + Region_data$region20_2*exp(v[[20]])+
    Region_data$region21_2*exp(v[[21]]) + Region_data$region22_2*exp(v[[22]]) + Region_data$region23_2*exp(v[[23]]) + Region_data$region24_2*exp(v[[24]]) + 
    Region_data$region25_2*exp(v[[25]]) + Region_data$region26_2*exp(v[[26]]) + Region_data$region27_2*exp(v[[27]]) + Region_data$region28_2*exp(v[[28]]) +
    Region_data$region29_2*exp(v[[29]]) + Region_data$region30_2*exp(v[[30]])
  
  region3<- Region_data$region1_3*exp(v[[1]]) + Region_data$region2_3*exp(v[[2]]) + Region_data$region3_3*exp(v[[3]]) + Region_data$region4_3*exp(v[[4]]) + 
    Region_data$region5_3*exp(v[[5]]) + Region_data$region6_3*exp(v[[6]]) + Region_data$region7_3*exp(v[[7]]) + Region_data$region8_3*exp(v[[8]]) +
    Region_data$region9_3*exp(v[[9]]) + Region_data$region10_3*exp(v[[10]]) + Region_data$region11_3*exp(v[[11]]) + Region_data$region12_3*exp(v[[12]]) + 
    Region_data$region13_3*exp(v[[13]]) + Region_data$region14_3*exp(v[[14]]) + Region_data$region15_3*exp(v[[15]]) + Region_data$region16_3*exp(v[[16]]) + 
    Region_data$region17_3*exp(v[[17]]) + Region_data$region18_3*exp(v[[18]]) + Region_data$region19_3*exp(v[[19]]) + Region_data$region20_3*exp(v[[20]])+
    Region_data$region21_3*exp(v[[21]]) + Region_data$region22_3*exp(v[[22]]) + Region_data$region23_3*exp(v[[23]]) + Region_data$region24_3*exp(v[[24]]) + 
    Region_data$region25_3*exp(v[[25]]) + Region_data$region26_3*exp(v[[26]]) + Region_data$region27_3*exp(v[[27]]) + Region_data$region28_3*exp(v[[28]]) +
    Region_data$region29_3*exp(v[[29]]) + Region_data$region30_3*exp(v[[30]])
  
  region4<- Region_data$region1_4*exp(v[[1]]) + Region_data$region2_4*exp(v[[2]]) + Region_data$region3_4*exp(v[[3]]) + Region_data$region4_4*exp(v[[4]]) + 
    Region_data$region5_4*exp(v[[5]]) + Region_data$region6_4*exp(v[[6]]) + Region_data$region7_4*exp(v[[7]]) + Region_data$region8_4*exp(v[[8]]) +
    Region_data$region9_4*exp(v[[9]]) + Region_data$region10_4*exp(v[[10]]) + Region_data$region11_4*exp(v[[11]]) + Region_data$region12_4*exp(v[[12]]) + 
    Region_data$region13_4*exp(v[[13]]) + Region_data$region14_4*exp(v[[14]]) + Region_data$region15_4*exp(v[[15]]) + Region_data$region16_4*exp(v[[16]]) + 
    Region_data$region17_4*exp(v[[17]]) + Region_data$region18_4*exp(v[[18]]) + Region_data$region19_4*exp(v[[19]]) + Region_data$region20_4*exp(v[[20]])+
    Region_data$region21_4*exp(v[[21]]) + Region_data$region22_4*exp(v[[22]]) + Region_data$region23_4*exp(v[[23]]) + Region_data$region24_4*exp(v[[24]]) + 
    Region_data$region25_4*exp(v[[25]]) + Region_data$region26_4*exp(v[[26]]) + Region_data$region27_4*exp(v[[27]]) + Region_data$region28_4*exp(v[[28]]) +
    Region_data$region29_4*exp(v[[29]]) + Region_data$region30_4*exp(v[[30]])
  
  region5<- Region_data$region1_5*exp(v[[1]]) + Region_data$region2_5*exp(v[[2]]) + Region_data$region3_5*exp(v[[3]]) + Region_data$region4_5*exp(v[[4]]) + 
    Region_data$region5_5*exp(v[[5]]) + Region_data$region6_5*exp(v[[6]]) + Region_data$region7_5*exp(v[[7]]) + Region_data$region8_5*exp(v[[8]]) +
    Region_data$region9_5*exp(v[[9]]) + Region_data$region10_5*exp(v[[10]]) + Region_data$region11_5*exp(v[[11]]) + Region_data$region12_5*exp(v[[12]]) + 
    Region_data$region13_5*exp(v[[13]]) + Region_data$region14_5*exp(v[[14]]) + Region_data$region15_5*exp(v[[15]]) + Region_data$region16_5*exp(v[[16]]) + 
    Region_data$region17_5*exp(v[[17]]) + Region_data$region18_5*exp(v[[18]]) + Region_data$region19_5*exp(v[[19]]) + Region_data$region20_5*exp(v[[20]])+
    Region_data$region21_5*exp(v[[21]]) + Region_data$region22_5*exp(v[[22]]) + Region_data$region23_5*exp(v[[23]]) + Region_data$region24_5*exp(v[[24]]) + 
    Region_data$region25_5*exp(v[[25]]) + Region_data$region26_5*exp(v[[26]]) + Region_data$region27_5*exp(v[[27]]) + Region_data$region28_5*exp(v[[28]]) +
    Region_data$region29_5*exp(v[[29]]) + Region_data$region30_5*exp(v[[30]])
  
  region6<- Region_data$region1_6*exp(v[[1]]) + Region_data$region2_6*exp(v[[2]]) + Region_data$region3_6*exp(v[[3]]) + Region_data$region4_6*exp(v[[4]]) + 
    Region_data$region5_6*exp(v[[5]]) + Region_data$region6_6*exp(v[[6]]) + Region_data$region7_6*exp(v[[7]]) + Region_data$region8_6*exp(v[[8]]) +
    Region_data$region9_6*exp(v[[9]]) + Region_data$region10_6*exp(v[[10]]) + Region_data$region11_6*exp(v[[11]]) + Region_data$region12_6*exp(v[[12]]) + 
    Region_data$region13_6*exp(v[[13]]) + Region_data$region14_6*exp(v[[14]]) + Region_data$region15_6*exp(v[[15]]) + Region_data$region16_6*exp(v[[16]]) + 
    Region_data$region17_6*exp(v[[17]]) + Region_data$region18_6*exp(v[[18]]) + Region_data$region19_6*exp(v[[19]]) + Region_data$region20_6*exp(v[[20]])+
    Region_data$region21_6*exp(v[[21]]) + Region_data$region22_6*exp(v[[22]]) + Region_data$region23_6*exp(v[[23]]) + Region_data$region24_6*exp(v[[24]]) + 
    Region_data$region25_6*exp(v[[25]]) + Region_data$region26_6*exp(v[[26]]) + Region_data$region27_6*exp(v[[27]]) + Region_data$region28_6*exp(v[[28]]) +
    Region_data$region29_6*exp(v[[29]]) + Region_data$region30_6*exp(v[[30]])
  
  region7<- Region_data$region1_7*exp(v[[1]]) + Region_data$region2_7*exp(v[[2]]) + Region_data$region3_7*exp(v[[3]]) + Region_data$region4_7*exp(v[[4]]) + 
    Region_data$region5_7*exp(v[[5]]) + Region_data$region6_7*exp(v[[6]]) + Region_data$region7_7*exp(v[[7]]) + Region_data$region8_7*exp(v[[8]]) +
    Region_data$region9_7*exp(v[[9]]) + Region_data$region10_7*exp(v[[10]]) + Region_data$region11_7*exp(v[[11]]) + Region_data$region12_7*exp(v[[12]]) + 
    Region_data$region13_7*exp(v[[13]]) + Region_data$region14_7*exp(v[[14]]) + Region_data$region15_7*exp(v[[15]]) + Region_data$region16_7*exp(v[[16]]) + 
    Region_data$region17_7*exp(v[[17]]) + Region_data$region18_7*exp(v[[18]]) + Region_data$region19_7*exp(v[[19]]) + Region_data$region20_7*exp(v[[20]])+
    Region_data$region21_7*exp(v[[21]]) + Region_data$region22_7*exp(v[[22]]) + Region_data$region23_7*exp(v[[23]]) + Region_data$region24_7*exp(v[[24]]) + 
    Region_data$region25_7*exp(v[[25]]) + Region_data$region26_7*exp(v[[26]]) + Region_data$region27_7*exp(v[[27]]) + Region_data$region28_7*exp(v[[28]]) +
    Region_data$region29_7*exp(v[[29]]) + Region_data$region30_7*exp(v[[30]])
 

  
   ##Choice probability
  a <- region1 + region2 + region3 + region4 +region5 + region6 +region7
  
  PPR1 <- region1/a 
  PPR2 <- region2/a 
  PPR3 <- region3/a  
  PPR4 <- region4/a   
  PPR5 <- region5/a  
  PPR6 <- region6/a 
  PPR7 <- region7/a   

  PR1  <- (PPR1!=0)*PPR1 +(PPR1==0)
  PR2  <- (PPR2!=0)*PPR2 +(PPR2==0)
  PR3  <- (PPR3!=0)*PPR3 +(PPR3==0)
  PR4  <- (PPR4!=0)*PPR4 +(PPR4==0)
  PR5  <- (PPR5!=0)*PPR5 +(PPR5==0)
  PR6  <- (PPR6!=0)*PPR6 +(PPR6==0)
  PR7  <- (PPR7!=0)*PPR7 +(PPR7==0)
  
  ##actual Choice
  CR_1 <- Data$robotaxi.relocation==1
  CR_2<- Data$robotaxi.relocation==2
  CR_3<- Data$robotaxi.relocation==3
  CR_4<- Data$robotaxi.relocation==4
  CR_5<- Data$robotaxi.relocation==5
  CR_6<- Data$robotaxi.relocation==6
  CR_7<- Data$robotaxi.relocation==7
  ##log likelihood
  
  LL<-colSums(CR_1*log(PR1) + CR_2*log(PR2)  + CR_3*log(PR3) + CR_4*log(PR4) + CR_5*log(PR5) + CR_6*log(PR6)+ CR_7*log(PR7))
}


## maxmizing log likelihood
res <- optim(b0,fr, method = "BFGS", hessian = TRUE, control=list(fnscale=-1))
##
## estimated parameter
b<-res$par
names(b)<-Pname0

#tval<-b/sqrt(-diag(solve(hhh)))
names(tval)<-Pname0
##initial log likelihood ?????
L0 <- hh*log(1/ch)
print(L0)
##final loglikelihood
LL <- res$value
print(LL)

## goodness of fit indicator 
## output the results 
print((L0-LL)/L0)
##adjusted r2 value 
adj_r<-(L0-(LL-length(b)))/L0
print(adj_r)
print(b)
print(tval)

c<-rbind(b,tval)
cc<-cbind(c,L0,LL,adj_r)


报错内容

img

我想尝试的方法

看到有人说,,利用dim()函数确定colsum函数内的维度,如果不是2维,尝试将格式转化为二维数组。

面临的问题

不知道把dim()函数放在代码哪个位置,或者有没有其他方法?

我来帮你解决一下吧