我已经编写了以下函数:
asteriks = function(pvalue){
if(pvalue > 0.05){
output = "NS"
}else if (pvalue <=0.05 & pvalue >0.01){
output = "*"
}else if (pvalue <=0.01 & pvalue >0.001){
output = "**"
}else if (pvalue <=0.001 & pvalue >0.0001){
output = "***"
}else if (pvalue <=0.0001){
output = "****"
}
return(output)
}
当我提供长度为1的参数时,它可以正常工作,但我希望该函数接受长度>1的向量作为输入并返回相同长度的向量。
我想要实现的示例:
vector_pvals = c(0.1, 0.05, 0.001, 0.0001)
asteriks(vector_pvals)
输出应该是这样的字符向量:
[1] "NS" "*" "***" "****"
我当然可以在使用for
循环的函数中实现这一目标,但实际上我想在一个dplyr
管道内使用它,因此只需将整个向量输入即可。 答案是在函数内使用for
循环逐一处理每个元素,还是有更简单的方法?
vectorize()
选项也是一个很好的通用解决方案。如果有更多的嵌套ifelse
语句,可能会变得混乱,此时上面建议使用cut
的解决方案可能更容易些。 - Annick