[英]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.