Голова продолжает получать то же значение, что и указатель хвоста в односвязном списке

dplyr с 0,4 реализовал все те объединения, в том числе external_join, но стоит отметить, что для первых нескольких релизов он использовал не для того, чтобы предлагать внешний_join, и в результате было много действительно плохой взломанный обходной код пользователя, плавающий вокруг (вы все еще можете найти это в ответах SO и Kaggle с того периода).

Основные моменты выделения :

v0.5 (6/2016)

  • Обработка для типа POSIXct, часовых поясов, дубликатов, разных уровней факторов. Более эффективные ошибки и предупреждения.
  • Новый аргумент суффикса для управления тем, какие суффиксные имена дублированных переменных получают (# 1296)

v0.4.0 (1/2015)

  • Внедрить правое соединение и внешнее соединение (# 96)
  • Мутирующие объединения, которые добавляют новые переменные в одну таблицу из совпадающих строк в другой. Фильтрация соединений, которые фильтруют наблюдения из одной таблицы на основе того, соответствуют ли они наблюдению в другой таблице.

v0.3 (10/2014)

  • Теперь можно оставить left_join разными переменными в каждой таблице: df1%>% left_join (df2, c ("var1" = "var2"))

v0.2 (5/2014)

  • * _ join () больше не переупорядочивает имена колонок (# 324)

v0.1.3 (4/2014)

Обходные решения для комментариев хайли в этой проблеме:

  • right_join (x, y) совпадает с left_join (y, x) в терминов строк, только столбцы будут разными порядками.
  • external_join - это в основном union (left_join (x, y), right_join (x, y)) - то есть сохранить все строки в обоих кадрах данных.

0
задан Mike 24 March 2019 в 03:21
поделиться

2 ответа

Установка tail = tail->next устанавливает tail в null, потому что он не устанавливается в первый раз, а затем и tail, и head сразу же перезаписываются при следующем вызове.

0
ответ дан Gregory 24 March 2019 в 03:21
поделиться

Здесь есть некоторые проблемы. Во-первых, чтобы решить вашу проблему, замените две последние строки на:

tail = tail->next = newNode;

Кроме того, учтите это:

tail = tail->next;
tail = newNode;

Какой смысл назначать переменную значению, если вы переназначить эту же переменную в следующем операторе? Ранее у вас тоже была та же ошибка:

newNode->p = malloc(sizeof(struct process));
newNode->p = newProcess;

Из-за второй строки единственное, чего вы добиваетесь в первой строке - это утечка памяти. Удалите первую строку полностью.

0
ответ дан Broman 24 March 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: