Я написал пример функции для того, как получить диаграмму из результатов анализа линейной модели. Затем я написал для 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)
}