Для примера dataframe:Извлечение значений из вывода функции: В R
df <- structure(list(region = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L), .Label = c("a", "b", "c", "d"), class = "factor"),
result = c(0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L), weight = c(0.126,
0.5, 0.8, 1.5, 5.3, 2.2, 3.2, 1.1, 0.1, 1.3, 2.5)), .Names = c("region",
"result", "weight"), row.names = c(NA, 11L), class = "data.frame")
Я расчет relative risk с помощью функции:
#Relative risk function
calcRelativeRisk <- function(mymatrix,alpha=0.05,referencerow=2)
{
numrow <- nrow(mymatrix)
myrownames <- rownames(mymatrix)
for (i in 1:numrow)
{
rowname <- myrownames[i]
DiseaseUnexposed <- mymatrix[referencerow,1]
ControlUnexposed <- mymatrix[referencerow,2]
if (i != referencerow)
{
DiseaseExposed <- mymatrix[i,1]
ControlExposed <- mymatrix[i,2]
totExposed <- DiseaseExposed + ControlExposed
totUnexposed <- DiseaseUnexposed + ControlUnexposed
probDiseaseGivenExposed <- DiseaseExposed/totExposed
probDiseaseGivenUnexposed <- DiseaseUnexposed/totUnexposed
# calculate the relative risk
relativeRisk <- probDiseaseGivenExposed/probDiseaseGivenUnexposed
print(paste("category =", rowname, ", relative risk = ",relativeRisk))
# calculate a confidence interval
confidenceLevel <- (1 - alpha)*100
sigma <- sqrt((1/DiseaseExposed) - (1/totExposed) +
(1/DiseaseUnexposed) - (1/totUnexposed))
# sigma is the standard error of estimate of log of relative risk
z <- qnorm(1-(alpha/2))
lowervalue <- relativeRisk * exp(-z * sigma)
uppervalue <- relativeRisk * exp(z * sigma)
print(paste("category =", rowname, ", ", confidenceLevel,
"% confidence interval = [",lowervalue,",",uppervalue,"]"))
}
}
}
первых о создании xtab:
df$region <- factor(df$region)
result <- xtabs(weight ~ region + result, data=df)
result
И затем используя функцию для расчета относительного риска:
calcRelativeRisk(result,alpha=0.05)
[1] "category = a , relative risk = 1.26904794624327"
[1] "category = a , 95 % confidence interval = [ 0.751148304223936 , 2.14402759189898 ]"
Я хочу обозначить относительный риск («RR») и доверительные интервалы «RR_upper» и «RR_lower». Это связано с тем, что я создаю большую таблицу с этим кодом, запущенным на нескольких фреймах данных. Как извлечь эти значения из вывода R? (а затем округлить их и т. д.). Я предполагаю, что могу изменить параметры печати функции, но поскольку я не создал эту функцию, я задавался вопросом, есть ли другой способ?
Perfect - благодаря @Imo –