如何确保列表中的每个元素都大于.05?

时间:2017-08-02 20:20:06

标签: r

我在数据框中有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?

3 个答案:

答案 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"