我在数据框中有dunn.test的输出,例如,在age.results [1,1]中,有一个列表
[1] 0.43032565 0.49113535 0.46824512 0.02847439 0.02312762 0.12649953
如果我想打印"是"如果所有这些都大于.05,我该怎么办呢? 我最初想过计算小于.05的数字,如果它大于0,那么我会写另一个函数来打印" no"。但是,如果我尝试
sum(age.results[1,1]<.05)
Error: (list) object cannot be coerced to type 'double'
如何修复此代码以打印&#34;是&#34;如果此特定列表中的所有内容都大于.05或&#34;否&#34;即使一个值小于.05?
答案 0 :(得分:4)
怎么样?
all(results[1,1] > .05)
答案 1 :(得分:0)
试试这个:
sum(sapply(results[1,1], function(x) x<.05))>0
如果所有这些都大于.05,则会返回FALSE
,否则为TRUE
。您可以在结果周围添加ifelse包装器以返回自己的字符串。
答案 2 :(得分:0)
vec <- c(0.43032565, 0.49113535, 0.46824512, 0.02847439, 0.02312762, 0.12649953)
mean(vec > 0.05) == 1
[1] FALSE
如果vec
是列表而不是向量,也有效,正如您的问题所暗示的那样
mean(as.list(vec) > 0.05) == 1
[1] FALSE
所以要完全回答你的问题,
print(ifelse(mean(vec > 0.05) == 1, 'yes', 'no'))
[1] "no"