You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中基于比分创建布尔列全为FALSE,该如何解决?

解决R中创建网球比赛布尔列的问题

嘿,我来帮你搞定这个小问题!首先先提个小细节:R里变量名不能包含减号,建议把tennis-game改成tennis_game这类合法的变量名,避免后续报错~

回到你的问题,betterAtTennis列全为FALSE的原因,是对isTrue()函数的用法理解有偏差:

  • isTrue()是用来判断单个逻辑值的函数,它不会对向量进行逐元素判断。当你传入player1 > player2这个逻辑向量时,isTrue()会把整个向量当成一个整体——只有当向量里的每一个元素都是TRUE时,它才返回TRUE,否则直接返回FALSE。而你的数据里第三场比赛player1输了,所以整个向量不是全TRUE,最终赋值给新列的就是单个FALSE,并被重复填充到所有行里。

正确的实现方式

其实非常简单,直接利用R的向量运算特性,逐行比较即可:

# 直接对每一行的player1和player2比分做比较
tennis_game$betterAtTennis <- player1 > player2

这样操作后,前两场player1获胜的行会得到TRUE,最后一场落败的行得到FALSE,完全符合你的需求。

进阶:处理平局场景

如果你的数据里存在比分相等的情况,还可以进一步调整逻辑:

# 平局时设为NA(表示无法判断谁更优)
tennis_game$betterAtTennis <- ifelse(player1 > player2, TRUE, 
                                     ifelse(player1 < player2, FALSE, NA))

内容的提问来源于stack exchange,提问作者R.Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:35:44