Представьте в функции, как сделать автоматические c настройки для нескольких переменных? - PullRequest
0 голосов
/ 03 апреля 2020

Я написал пример функции для того, как получить диаграмму из результатов анализа линейной модели. Затем я написал для l oop, чтобы получить диаграмму для нескольких переменных во фрейме данных. Но если на яксисе будут переменные с очень разными значениями, эта функция будет работать, ручные настройки для графика не будут работать для всех диаграмм. Есть ли способ сделать функцию, которая может самостоятельно исправить масштабирование? Или как люди это делают?

rm(list=ls())
id <- rep(1:5, each=2)
trt <- rep(LETTERS[1:2],5)
set.seed(1)
q1 <- runif(10)
set.seed(2)
q2 <- runif(10)
set.seed(3)
q3 <- runif(10)
set.seed(4)
q4 <- runif(10)

df <- data.frame(id,trt,q1,q2,q3,q4)
df
hist(df$q1)
str(df)
test <- function(i){
dflm <- lm(formula=df[,i] ~  trt + (1|id), data=df)
library(emmeans)
emm <- emmeans(dflm, "trt")
a <- print(emm)
library(multcomp)
cld(emm)
b <- print(pairs(emm))
a <- data.frame(a)
b <- data.frame(b)
c <- data.frame(a,b[6])
d <- colnames(df)[i]
e <- cbind(d,c)
pvalue <-  round(c[1,7],2)
em <- c[1:2,2]
CIn <- c[1:2,5]
CIu <- c[1:2,6]
dfplot <- data.frame(em,CIn, CIu)
pl <- barplot(dfplot$em, main=d,
              ylim=c(0,1.4), names.arg=c("Yes", "No"), space =c(0.6),width=c(1.5,1.5),cex.axis=1.0,cex.names=1.0, ylab="Conc")
arrows(pl, em-(em-CIn), pl, em+(CIu-em), code=3, angle=90, length=0.1)
x <- pl
y <- 1.1
offset <- 0.05
lines(x[c(1,2)],c(y,y))
lines(x[c(2,2)],c(y,y-offset))
lines(x[c(1,1)],c(y,y-offset))

text(2.8, 1.2, pvalue)
}

colnames(df)
num <- list()
quest <- c(3:6)
for(n in 1:length(quest)){
  i <- quest[n]
  num[[n]] <- test(i)
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...