【发布时间】:2017-02-19 09:59:10
【问题描述】:
我是 R 和一般编程的新手。我有两个数据帧,我想从两个不同的数据帧 Wins 和 Losses 的计数中计算获胜概率。我想检查列表并检查分数的值是否出现在两个列表中,如果出现,我想执行和操作,如果没有,我希望它只是返回一个 NA。
df W df L
score freq score freq
5 10 5 10
10 10 10 5
7 2 3 2
4 1
这是我目前编写的函数:
test <- function(W, L){
if (W$score == L$score) {
total <- W$freq + L$freq
W$freq / total
}
else NA
}
我希望输出是 W 长度的列表:
0.5
0.66
NA
NA
这适用于数据框中的第一个值,但我收到以下错误:the condition has length > 1 and only the first element will be used。我一直在 StackOverflow 上阅读我应该使用 ifelse 函数,因为它会循环遍历所有行。但是,当我尝试这个时,它出现了两个数据框列的长度不同的问题。我想在很多不同的数据帧上重复使用这个函数,它们总是有不同的长度,所以我想要一个解决方案。
任何帮助将不胜感激,如果目前尚不清楚,我可以进一步澄清自己。
谢谢
【问题讨论】:
标签: r function if-statement compare probability