簡體   English   中英

R中的循環:錯誤:可變長度不同

[英]LOOP in R: Error: variable lengths differ

我試圖構建這個循環,以便我可以同時測試兩個結果。 但是,它產生了一條錯誤消息:“model.frame.default 中的錯誤(公式 = ~outcome + centered.predictor1 +:可變長度不同(為 'centered.predictor1' 找到)”

但是當我分別測試每個結果時,代碼(沒有循環)沒有產生錯誤。

在此先感謝您的幫助!

n1 = rnorm(n = 2000, mean = 0, sd = 1)
n2 = rnorm(n = 2000, mean = 0, sd = 1)
Z_familism = rnorm(n = 2000, mean = 0, sd = 1)
Z_avoidance = rnorm(n = 2000, mean = 0, sd = 1)
Country = rnorm(n = 2000, mean = 0, sd = 1)
Z_anxiety = rnorm(n = 2000, mean = 0, sd = 1)
data01<-data.frame(n1,n2,Z_familism,Z_avoidance,Country,Z_anxiety)


outcome<-c('n1', 'n2')

for (n in outcome){
  
  rsa.data<-data.frame(predictor1=data01$Z_familism,
                       predictor2=data01$Z_avoidance,
                       nest=as.factor(data01$Country),
                       control=data01$Z_anxiety,
                       multilevel=data01$Country,
                       outcome=data01[n]) 
 
  
  rsa.data <- within.data.frame(rsa.data, {
    centered.predictor1 <- predictor1 - 0    #Center predictor 1
    centered.predictor2 <- predictor2 - 0  #Center predictor 2
    squared.predictor1  <- centered.predictor1* centered.predictor1 #Create squared term
    squared.predictor2  <- centered.predictor2* centered.predictor2 #Create squared term
    interaction           <- centered.predictor1* centered.predictor2 #Create interaction term
   
  })
  
  mlm.model <- lme(outcome ~ centered.predictor1+centered.predictor2  + squared.predictor1 + interaction +squared.predictor2+control,
                   data = rsa.data,
                   random = ~ 1|multilevel, # Replace "nesting.variable" with the name of your nesting variable 
                   na.action = "na.omit")
  summary(mlm.model) #View Model
  intervals(mlm.model, which = "fixed")
  vcov(mlm.model) #View covariance of model
  
}

問題是當您在循環內創建 rsa.data 數據框時,特別是使用結果列。 您應該使用返回數字向量的 data01[, n] 而不是返回數據幀的 data01[n]。 這樣,您的所有數據都具有相同的長度。

rsa.data<-data.frame(predictor1=data01$Z_familism,
                     predictor2=data01$Z_avoidance,
                     nest=as.factor(data01$Country),
                     control=data01$Z_anxiety,
                     multilevel=data01$Country,
                     outcome=data01[, n])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM