簡體   English   中英

在創建的 Function 中使用 Na.RM = TRUE

[英]Using Na.RM = TRUE in a created Function

我正在嘗試計算一些數據的 SEM,但由於存在 NA,我無法讓它工作。 這是我的代碼:

sem <- function(x, na.rm = TRUE) sd(x, na.rm = TRUE)/sqrt(length(x, na.rm = TRUE), na.rm = TRUE) #making a SEM function 



allbox.rptr %>%
  group_by(Trait, Time) %>%
  summarize(Mean_R = mean(R, na.rm = TRUE), SEM = sem(R, na.rm = TRUE))

這是我正在使用的數據:

dput(allbox.rptr)
structure(list(ID = c("R3L12", "R3L12", "R3L12", "R3L12", "R3L12", 
"R3L12", "R3L12", "R3L1", "R3L1", "R3L1", "R3L1", "R3L1", "R3L1", 
"R3L1", "R3L2", "R3L2", "R3L2", "R3L2", "R3L2", "R3L2", "R3L2", 
"R3L4", "R3L4", "R3L4", "R3L4", "R3L4", "R3L4", "R3L4", "R8L1", 
"R8L1", "R8L1", "R8L1", "R8L1", "R8L1", "R8L1", "R3L9", "R3L9", 
"R3L9", "R3L9", "R3L9", "R3L9", "R3L9", "R3L8", "R3L8", "R3L8", 
"R3L8", "R3L8", "R3L8", "R3L8", "R3L11", "R3L11", "R3L11", "R3L11", 
"R3L11", "R3L11", "R3L11", "R8NAT123", "R8NAT123", "R8NAT123", 
"R8NAT123", "R8NAT123", "R8NAT123", "R8NAT123", "R8L4", "R8L4", 
"R8L4", "R8L4", "R8L4", "R8L4", "R8L4", "R4L8", "R4L8", "R4L8", 
"R4L8", "R4L8", "R4L8", "R4L8"), Trait = c("ACC", "ACC", "Tb", 
"Tb", "HR", "HR", "Perc.Active", "ACC", "ACC", "Tb", "Tb", "HR", 
"HR", "Perc.Active", "ACC", "ACC", "Tb", "Tb", "HR", "HR", "Perc.Active", 
"ACC", "ACC", "Tb", "Tb", "HR", "HR", "Perc.Active", "ACC", "ACC", 
"Tb", "Tb", "HR", "HR", "Perc.Active", "ACC", "ACC", "Tb", "Tb", 
"HR", "HR", "Perc.Active", "ACC", "ACC", "Tb", "Tb", "HR", "HR", 
"Perc.Active", "ACC", "ACC", "Tb", "Tb", "HR", "HR", "Perc.Active", 
"ACC", "ACC", "Tb", "Tb", "HR", "HR", "Perc.Active", "ACC", "ACC", 
"Tb", "Tb", "HR", "HR", "Perc.Active", "ACC", "ACC", "Tb", "Tb", 
"HR", "HR", "Perc.Active"), Time = c(5, 30, 5, 30, 5, 30, 60, 
5, 30, 5, 30, 5, 30, 60, 5, 30, 5, 30, 5, 30, 60, 5, 30, 5, 30, 
5, 30, 60, 5, 30, 5, 30, 5, 30, 60, 5, 30, 5, 30, 5, 30, 60, 
5, 30, 5, 30, 5, 30, 60, 5, 30, 5, 30, 5, 30, 60, 5, 30, 5, 30, 
5, 30, 60, 5, 30, 5, 30, 5, 30, 60, 5, 30, 5, 30, 5, 30, 60), 
    R = c(0.119, 0.161, 0.22, 0.204, 0.098, 0.082, 0.252, 0.125, 
    0.171, 0.398, 0.348, 0.332, 0.266, 0.213, 0.199, 0.293, 0.419, 
    0.463, 0.31, 0.308, 0.343, 0.118, 0.161, 0.401, 0.495, 0.228, 
    0.293, 0.123, 0.041, 0.028, 0.188, 0.146, 0.268, 0.275, 0.006, 
    0.025, 0.036, 0.192, 0.194, 0.174, 0.136, 0.072, NA, NA, 
    0.138, 0.128, 0.375, 0.339, NA, 0.099, 0.16, 0.106, 0.08, 
    0.079, 0.074, 0.069, 0.207, 0.261, 0.723, 0.56, 0.545, 0.431, 
    0.109, 0.172, 0.249, 0.177, 0.117, 0.142, 0.158, 0.296, 0.108, 
    0.159, 0.099, 0.105, 0.101, 0.127, 0.212), SE = c(0.05, 0.071, 
    0.084, 0.082, 0.047, 0.047, 0.091, 0.05, 0.07, 0.096, 0.097, 
    0.092, 0.084, 0.09, 0.08, 0.111, 0.116, 0.127, 0.098, 0.101, 
    0.134, 0.047, 0.067, 0.098, 0.108, 0.072, 0.086, 0.067, 0.023, 
    0.026, 0.072, 0.06, 0.094, 0.092, 0.031, 0.019, 0.032, 0.071, 
    0.077, 0.067, 0.062, 0.057, NA, NA, 0.054, 0.054, 0.106, 
    0.098, NA, 0.046, 0.078, 0.047, 0.04, 0.035, 0.039, 0.053, 
    0.073, 0.087, 0.101, 0.119, 0.116, 0.117, 0.143, 0.07, 0.098, 
    0.068, 0.05, 0.059, 0.063, 0.114, 0.043, 0.064, 0.039, 0.039, 
    0.038, 0.049, 0.082)), row.names = c(NA, -77L), class = c("tbl_df", 
"tbl", "data.frame"))

當我運行代碼時,這是我得到的錯誤:

 Error: Problem with `summarise()` column `SEM`.
ℹ `SEM = sem(R, na.rm = TRUE)`.
x 2 arguments passed to 'length' which requires 1
ℹ The error occurred in group 1: Trait = "ACC", Time = 5.
Run `rlang::last_error()` to see where the error occurred. 

任何幫助將不勝感激,謝謝!

在 OP 的sem function 中,將na.rm參數添加到沒有該參數的函數中。 相反,它可以是邏輯向量( .is.na(x) )的sum ,它給出列中非 NA 元素的數量(或者也可以是length(x[.is.na(x)])

sem <- function(x, na.rm = TRUE) sd(x, na.rm = TRUE)/sqrt(sum(!is.na(x))) 

現在,我們應用代碼

library(dplyr)
allbox.rptr %>%
  group_by(Trait, Time) %>%
  summarize(Mean_R = mean(R, na.rm = TRUE), 
      SEM = sem(R, na.rm = TRUE), .groups = 'drop')

-輸出

# A tibble: 7 × 4
  Trait        Time Mean_R    SEM
  <chr>       <dbl>  <dbl>  <dbl>
1 ACC             5  0.121 0.0190
2 ACC            30  0.168 0.0275
3 HR              5  0.241 0.0432
4 HR             30  0.226 0.0352
5 Perc.Active    60  0.170 0.0348
6 Tb              5  0.278 0.0570
7 Tb             30  0.258 0.0530

暫無
暫無

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

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