2 *“ X2B”中的错误:二进制运算符

时间:2019-05-19 01:19:16

标签: r

我试图从拉曼数据库中查看1903年到1960年之间的棒球数据。我这样做是为了自己的研究。我想使用击球表格,其中不包括击球平均数,拍击,OBP或OPS。

我想计算这些,但是我首先需要获得总基数。我无法让程序计算X2B和X3B的总基数。

我已经尝试过使用as.numeric,但是无法正常工作。这是使用R和R工作室。我曾尝试在X2B和X3B的双引号和三引号周围加上引号,而没有引号。

batting_1960 <- batting_1903 %>%  
  filter(yearID <= 1960 & G >= 90) %>% 
  mutate(Batting_Average = H/AB, TB = (2*"X2B")+(3*"X3B")+HR+(H-"X2B"-"X3B"-HR)) %>% 
  arrange(yearID, desc(Batting_Average))

我希望对于每一行数据,总基数都将在新列中计算出来,但出现错误:

Error in 2 * "X2B" : non-numeric argument to binary operator 

这样一来,我就可以最终计算出OPS,OBP和击打。

1 个答案:

答案 0 :(得分:0)

您的代码正试图通过文字字符串"X2B"来使2成为异常,这将不起作用。列名应在mutate()中不加引号。

您的错误:

> tibble(X2B = 1:10) %>% mutate(TB = 2 * "X2B")
Error in 2 * "X2B" : non-numeric argument to binary operator

应为例如

> tibble(X2B = 1:10) %>% mutate(TB = 2 * X2B)
# A tibble: 10 x 2
     X2B    TB
   <int> <dbl>
 1     1     2
 2     2     4
 3     3     6
 4     4     8
 5     5    10
 6     6    12
 7     7    14
 8     8    16
 9     9    18
10    10    20