簡體   English   中英

在 function 中按組使用 lapply,在 R 中使用 2 arguments

[英]Use lapply by group in a function with 2 arguments in R

我想計算不同組中幾個變量的 roc,只修復響應變量,這是我在下面嘗試的:

library(pROC)
data(aSAH)
lapply(dplyr::select(aSAH,c(s100b,ndka)),roc,response = aSAH$outcome)

和 output:

$s100b

Call:
roc.default(response = ..1, predictor = X[[i]])

Data: X[[i]] in 72 controls (..1 Good) < 41 cases (..1 Poor).
Area under the curve: 0.7314

$ndka

Call:
roc.default(response = ..1, predictor = X[[i]])

Data: X[[i]] in 72 controls (..1 Good) < 41 cases (..1 Poor).
Area under the curve: 0.612

但我需要在每個性別和選定的變量中應用它。 就像group_by(gender) %>% roc()

謝謝!

by .

by(aSAH, aSAH$gender, function(x) 
  lapply(x[c("s100b", "ndka")], function(y) roc(y, response=x$outcome)))

# aSAH$gender: Male
# $s100b
# 
# Call:
#   roc.default(response = x$outcome, predictor = y)
# 
# Data: y in 22 controls (x$outcome Good) < 20 cases (x$outcome Poor).
# Area under the curve: 0.7727
# 
# $ndka
# 
# Call:
#   roc.default(response = x$outcome, predictor = y)
# 
# Data: y in 22 controls (x$outcome Good) < 20 cases (x$outcome Poor).
# Area under the curve: 0.5523
# 
# --------------------------------------------------- 
#   aSAH$gender: Female
# $s100b
# 
# Call:
#   roc.default(response = x$outcome, predictor = y)
# 
# Data: y in 50 controls (x$outcome Good) < 21 cases (x$outcome Poor).
# Area under the curve: 0.72
# 
# $ndka
# 
# Call:
#   roc.default(response = x$outcome, predictor = y)
# 
# Data: y in 50 controls (x$outcome Good) < 21 cases (x$outcome Poor).
# Area under the curve: 0.6671

暫無
暫無

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

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