Почему coalesce () в R возвращает мне дополнительные значения? - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь использовать coalesce().Примерный набор данных выглядит следующим образом (воспроизводимый код ниже):

    Country X2016 X2017 X2018
1 Australia    10    NA    12
2        UK    15    20    NA
3       USA    NA    40    NA

Когда я передаю два вектора в этой форме: coalesce(df$X2018, df$X2017), он отлично работает.

Но когда я ставлювекторы как: df[4], df[3], я получаю неожиданные дополнительные значения.

Воспроизводимый пример ниже:

library(tidyverse)

df <- data.frame(stringsAsFactors=FALSE,
                 Country = c("Australia", "UK", "USA"),
                 X2016 = c(10L, 15L, NA),
                 X2017 = c(NA, 20L, 40L),
                 X2018 = c(12L, NA, NA)
)
df
coalesce(df$X2018, df$X2017)
coalesce(df[4], df[3])

Итак, coalesce(df$X2018, df$X2017) возвращает:

[1] 12 20 40

, чтокак и ожидалось.

Я не понимаю, почему coalesce(df[4], df[3]) возвращает:

       X2018
1         12
2 NA, 20, 40
3 NA, 20, 40

Я не могу понять, почему он возвращает первые два столбца.

1 Ответ

0 голосов
/ 07 октября 2018

Когда вы используете df[4], вы на самом деле имеете в виду фрейм данных (или, в более общем случае, список).Это то, что сбрасывает функцию coalesce.Вы, вероятно, намеревались сделать это:

coalesce(df[[4]], df[[3]])

Что касается почему вы видите ваш текущий вывод, нам, возможно, придется рассмотреть точную реализацию coalesce.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...