簡體   English   中英

中介包中的 Multimed 函數:“參數不是數字或邏輯:返回 NA”錯誤

[英]Multimed function in Mediation package: 'argument is not numeric or logical: returning NA' error

運行multimed函數時出現錯誤: argument is not numeric or logical: returning NA 我可以從multimed但不是我自己的數據集或“假”數據集(見下文)運行示例代碼。 不確定這里的問題是什么 - 這是數據設置中的錯誤? 還是代碼本身的錯誤?

感謝您的幫助。

library(palmerpenguins)
library(mediation)
#> Loading required package: MASS
#> Loading required package: Matrix
#> Loading required package: mvtnorm
#> Loading required package: sandwich
#> mediation: Causal Mediation Analysis
#> Version: 4.5.0
library(tidyverse)
library(reprex)


## create a fake dataset to show example of error
glimpse(penguins)
#> Rows: 344
#> Columns: 8
#> $ species           <fct> Adelie, Adelie, Adelie, Adelie, Adelie, Adelie, Adel~
#> $ island            <fct> Torgersen, Torgersen, Torgersen, Torgersen, Torgerse~
#> $ bill_length_mm    <dbl> 39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, ~
#> $ bill_depth_mm     <dbl> 18.7, 17.4, 18.0, NA, 19.3, 20.6, 17.8, 19.6, 18.1, ~
#> $ flipper_length_mm <int> 181, 186, 195, NA, 193, 190, 181, 195, 193, 190, 186~
#> $ body_mass_g       <int> 3750, 3800, 3250, NA, 3450, 3650, 3625, 4675, 3475, ~
#> $ sex               <fct> male, female, female, NA, female, male, female, male~
#> $ year              <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007~

penguins %>%
  filter(species!="Gentoo") %>%
  mutate(treat = as.numeric(rbernoulli(n=220, 0.5))) %>%
  drop_na()->df

summary(df)
#>       species          island    bill_length_mm bill_depth_mm  
#>  Adelie   :146   Biscoe   : 44   Min.   :32.1   Min.   :15.50  
#>  Chinstrap: 68   Dream    :123   1st Qu.:37.8   1st Qu.:17.50  
#>  Gentoo   :  0   Torgersen: 47   Median :40.6   Median :18.40  
#>                                  Mean   :42.0   Mean   :18.37  
#>                                  3rd Qu.:46.0   3rd Qu.:19.10  
#>                                  Max.   :58.0   Max.   :21.50  
#>  flipper_length_mm  body_mass_g       sex           year          treat      
#>  Min.   :172.0     Min.   :2700   female:107   Min.   :2007   Min.   :0.000  
#>  1st Qu.:187.0     1st Qu.:3400   male  :107   1st Qu.:2007   1st Qu.:0.000  
#>  Median :191.0     Median :3700                Median :2008   Median :1.000  
#>  Mean   :191.9     Mean   :3715                Mean   :2008   Mean   :0.514  
#>  3rd Qu.:196.0     3rd Qu.:3994                3rd Qu.:2009   3rd Qu.:1.000  
#>  Max.   :212.0     Max.   :4800                Max.   :2009   Max.   :1.000

test<-multimed(outcome = "bill_length_mm", 
               med.main = "flipper_length_mm", 
               med.alt = "bill_depth_mm", 
               treat = "treat", 
               covariates = "year", 
               data=df, sims=100)
#> Warning in mean.default(data.1[, treat] * data.1[, med.main]^2): argument is not
#> numeric or logical: returning NA
#> Warning in ETM2 * sigma^2/VY: Recycling array of length 1 in vector-array arithmetic is deprecated.
#>   Use c() or as.vector() instead.
#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

#> Warning in mean.default(data.b[, treat]): argument is not numeric or logical:
#> returning NA

由 reprex 包於 2022-05-18 創建 (v2.0.1)

我和你有同樣的問題。

對於警告:

#> mean.default(data.b[,treat]) 中的警告:參數不是數字或邏輯的:
#> 返回不適用

您應該將表格轉換為.data.frame,因為該包不是為 tibble 設計的。

對於警告:

mean.default(data.1[,treat] * data.1[,med.main]^2) 中的警告:參數不是
#> 數字或邏輯:返回 NA

您應該將處理變量轉換為數字但是,對於另一個警告,我還沒有找到解決方案......

暫無
暫無

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

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