Ошибка в 2 * "X2B": не числовой аргумент для бинарного оператора - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь посмотреть на данные по бейсболу за 1903–1960 гг. Из базы данных Lahman. Я делаю это для собственного исследования. Я хочу использовать таблицу ватин, которая не включает в себя средний уровень, слизняк, OBP или OPS.

Я хочу их вычислить, но сначала мне нужно получить общее количество баз. У меня проблемы с получением программы для расчета общих баз с X2B и X3B.

Я попробовал как .numeric, но я не мог заставить его работать. Это использует R и R Studio. Я попытался поместить кавычки вокруг 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 голосов
/ 19 мая 2019

Ваш код пытается преобразовать 2 в буквальную строку "X2B", что не сработает.Имена столбцов должны быть без кавычек в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...