我的问题是,如何在if语句之后进行多个操作。例如:
vartest <- var.test(var1 ~ group, alternative='two.sided', conf.level=.95, data=data1)
ttest <- t.test(var1~group, alternative='two.sided', conf.level=.95, var.equal=FALSE, data=data1)
if (vartest$p.value>0.05) {
if (ttest$p.value<=0.05) {
cat(ttest$p.value)
ggboxplot(data1, x="group", y="var1", color="group", palette=c("#00AFBB", "#E7B800"), ylab="var1", xlab="group")
group_by(data1, group) %>% summarise(count = n(), mean = mean(var1, na.rm = TRUE), sd = sd(var1, na.rm = TRUE))
} else{
cat("text1.")
}
} else{
cat("text2.")
}
这没有给我我想要的结果,而是仅将表达式的第一部分和最后一部分打印到控制台。 如果我为此更改了操作顺序:
vartest <- var.test(var1 ~ group, alternative='two.sided', conf.level=.95, data=data1)
ttest <- t.test(var1~group, alternative='two.sided', conf.level=.95, var.equal=FALSE, data=data1)
if (vartest$p.value>0.05) {
if (ttest$p.value<=0.05) {
cat(ttest$p.value)
group_by(data1, group) %>% summarise(count = n(), mean = mean(var1, na.rm = TRUE), sd = sd(var1, na.rm = TRUE))
ggboxplot(data1, x="group", y="var1", color="group", palette=c("#00AFBB", "#E7B800"), ylab="var1", xlab="group")
} else{
cat("text1.")
}
} else{
cat("text2.")
}
仅将表达式的第一部分和最后一部分打印到控制台。
任何想法如何在if和else之间运行所有动作? 请帮忙!
答案 0 :(得分:1)
在括号内禁用隐式打印,并返回最后一个表达式的值。
{
"hello"
cat("world\n")
"how are you"
"today?"
}
## world
## [1] "today?"
如果要打印或以其他方式显示大括号内的内容,则可以使用显式print
或message
或cat
。
{
print("hello")
cat("world\n")
message("how are you")
"today?"
}
## [1] "hello"
## world
## how are you
## [1] "today?"
答案 1 :(得分:0)
我没有您正在使用的数据,但是我重新创建了您的问题,如下所示:
示例:
library(ggplot2)
library(dplyr)
p.value <- 0.02
if (p.value<=0.05) {
cat(p.value)
mtcars %>% group_by(gear) %>% summarise(count = n(), mean = mean(hp))
qplot(x = wt, y = mpg, data = mtcars, geom = "point")
} else{
cat("text1.")
}
上面的示例将仅打印p.value
和图表。切换绘图和摘要表的顺序将仅返回p.value和摘要表。
为解决此问题,我们可以分配回来并显式打印。
library(ggplot2)
library(dplyr)
p.value <- 0.02
if (p.value<=0.05) {
cat(p.value)
my_sum <- mtcars %>% group_by(gear) %>% summarise(count = n(), mean = mean(hp))
print(my_sum)
my_plot <- qplot(x = wt, y = mpg, data = mtcars, geom = "point")
print(my_plot)
} else{
cat("text1.")
}