为什么我的'if'参数不能解释为逻辑

克里斯·埃瓦尼克(Chris Ewanik)

我正在处理一些数据,并尝试进行一些条件过滤。我想写一条语句来评估一个变量是否等于数字(在这种情况下为1),如果是,则根据另一列的值进行过滤。结果应该是,所有AtBatPitchSequences == 1也都具有PitchType ==“ FA”。

  • 请注意,如果AtBatPitchSequence> 1,则不应对其进行过滤,因此应在过滤器之后保留第4行

我的数据(firsttwopitches)如下所示:

  YearID GameID GamePitchSequen~ PAofInning AtBatPitchSeque~ Inning Balls Strikes PitchType
   <dbl> <chr>             <dbl>      <dbl>            <dbl>  <dbl> <dbl>   <dbl>     <chr>
1   2018 DFCBC~                1          1                1      1     0       0        FA
2   2018 DFCBC~                2          1                2      1     1       0        FA
3   2018 DFCBC~                4          2                1      1     0       0        FA
4   2018 DFCBC~                5          2                2      1     0       1        SI
5   2018 DFCBC~                8          3                1      1     0       0        FA
6   2018 DFCBC~                9          3                2      1     0       1        FA

为了解决这个问题,我尝试使用if语句:

library(tidyverse)

firsttwopitches %>%
  if (AtBatPitchSequence == 1) {
    filter(PitchType == "FA")
  }

但是,这会引发错误和警告:

Error in if (.) AtBatPitchSequence == 1 else { : 
  argument is not interpretable as logical
In addition: Warning message:
In if (.) AtBatPitchSequence == 1 else { :
  the condition has length > 1 and only the first element will be used

我不明白为什么我的论点不能解释为逻辑。在我的脑海中,它应该评估AtBatPitchSequence是否等于1,然后继续进行下一行。另外,警告消息是什么意思?如果通过更正我的if语句来解决此警告,请不要担心,但我仍然是新手,并且正在尝试更好地调试自己的工作。在if / while(条件)中通读了此错误:参数不能解释为逻辑问题,其他人则无法尝试查找我的错误,但未成功。

非常感谢你

阿克伦

我们可以&filter

library(dplyr)
firsttwopitches %>%   
   filter(AtBatPitchSequence == 1, PitchType == "FA")

如果我们要保留“ AtBatPitchSequence”不等于1的行,则添加另一个表达式 |

firsttwopitches %>% 
    filter((AtBatPitchSequence == 1 & PitchType == "FA")|AtBatPitchSequence != 1) 

有两个问题-1)if/else没有向量化,2)与代码的阻塞有关,{}尤其是在管道(%>%)中使用代码一个相关的问题也是在寻找列名AtBatPitchSequence外的tidyverse功能,即mutatesummarise等等。在这种情况下,我们需要指定数据,以及.$AtBatPitchSequence


错误/警告可以通过内置的数据集重现

data(iris)
head(iris) %>% 
   if(Species == 'setosa') {
       filter(Petal.Length > 1.5)
    }

if(。)Species ==“ setosa” else {:不能解释为逻辑错误此外:警告消息:if(。)Species ==“ setosa” else {:条件的长度> 1,并且只有将使用第一个元素

现在,我们可以通过在内进行阻塞来消除错误{},但请注意,警告仍然保持为if/else未向量化状态,这也会产生错误的输出(下面的输出是正确的,但这仅是因为只有一行具有TRUE条件)遇见)

head(iris) %>% 
    {if(.$Species == 'setosa') {
        filter(., Petal.Length > 1.5)
     }}
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.4         3.9          1.7         0.4  setosa

警告消息:在if(。$ Species ==“ setosa”){中:条件的长度> 1,并且仅使用第一个元素

如果我们在使用多个表达式filter,将生成&

head(iris) %>% 
    filter(Species == 'setosa', Petal.Length > 1.5)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.4         3.9          1.7         0.4  setosa

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误“对象不能解释为一个因素”是什么意思?

我的程序没有为 print("the") 打印任何内容。谁能解释为什么?

使用str.replace给我一个TypeError:'str'对象不能解释为整数

解释为什么我不能将这些变量设置为全局

谁能解释,为什么我的分类不能正常工作?

为什么我在扩展方法中的 `char` 参数被解释为 `int`?

输入参数 - 不能解释为索引

谁能解释为什么我的程序未显示正确的警报?

谁能解释为什么我们需要在SpriteKit中进行缩放?

你能解释为什么我有这个吗?

谁能解释为什么我的Java代码多播无法通过LAN工作?

谁能解释为什么我的Z-Index无法正常工作?

VBA-谁能解释为什么我通过Cells()遇到对象错误?

谁能解释为什么我的Carbon设置不保留数据?

谁能解释为什么内容无法清除?

谁能解释为什么 JUnit 测试会出错?

谁能解释为什么这不起作用?

谁能解释为什么传入的IIFE参数会以未定义方式更改范围内变量的原因?

谁能解释为什么我的date函数通过JS date对象给我一个错误的转换?

为什么我的座标标高不对,谁能解释我

您能向我解释为什么if / else语句不能正常工作吗?

谁能解释为什么这些“不合适的阻塞方法调用”警告从我的代码中弹出?

谁能解释为什么我在这个leetcode问题上得到未定义的输出?

在我的代码中, mousemove 属性不起作用并更改了输入类型范围。能解释为什么吗?

解释为什么我的方法没有采用以下参数

为什么我的 TS 代码没有被解释为 CommonJS?

使用KerasClassifier randomizedsearchcv进行超参数优化,TypeError:'list'对象不能解释为整数

需要解释为什么我的代码会产生 ValueError

有什么简单的方法可以解释为什么我不能做List <Animal>动物= new ArrayList <Dog>()?