Ошибка неиспользуемых аргументов для Simper [duplicate]

Давайте перепишем ваш код следующим образом:

x = 1
y = [x]
z = y * 4

myList = [z] * 3

После этого запустите следующий код, чтобы сделать все более понятным. Что делает код, в основном печатает id s полученных объектов, которые

Вернуть «идентификатор» объекта

blockquote >

и поможет нам идентифицировать их и проанализировать, что происходит:

print("myList:")
for i, subList in enumerate(myList):
    print("\t[{}]: {}".format(i, id(subList)))
    for j, elem in enumerate(subList):
        print("\t\t[{}]: {}".format(j, id(elem)))

И вы получите следующий результат:

x: 1
y: [1]
z: [1, 1, 1, 1]
myList:
    [0]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528
    [1]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528
    [2]: 4300763792
        [0]: 4298171528
        [1]: 4298171528
        [2]: 4298171528
        [3]: 4298171528

Итак, теперь давайте шаг за шагом. У вас есть x, который является 1, и единственным списком элементов y, содержащим x. Ваш первый шаг - y * 4, который даст вам новый список z, который в основном [x, x, x, x], т. Е. Создает новый список, который будет содержать 4 элемента, которые являются ссылками на исходный объект x. Чистый шаг очень похож. В основном вы делаете z * 3, который является [[x, x, x, x]] * 3 и возвращает [[x, x, x, x], [x, x, x, x], [x, x, x, x]] по той же причине, что и для первого шага.

43
задан luciano 13 June 2014 в 10:32
поделиться

3 ответа

Как сказал Паскаль, следующие работы

require(MASS)
require(dplyr)
mtcars %>%
   dplyr::select(mpg)
44
ответ дан David Arenburg 19 August 2018 в 14:22
поделиться
  • 1
    Если вы уверены, что собираетесь очень часто загружать MASS и dplyr и часто использовать «select», вы можете переназначить эту функцию: select & lt; - dplyr :: select, которая может помочь сохранить ввод «dplyr ::» повторно – KFB 17 September 2014 в 18:33
  • 2
    Я знаю, что это старый, но в любом случае. Просто столкнулся с той же проблемой. И, по-видимому, MASS импортируется (в том числе) ggplot2, поэтому я думаю, что многие из них, вероятно, будут использовать их вместе. Хотя я считаю, что я использовал ggplot2 и dplyr без проблем, прежде чем ... – Latrunculia 1 December 2015 в 15:10
  • 3
    У меня аналогичная проблема. Однако странно, что эта проблема не возникала до сегодняшнего дня, и я действительно не менял свой код. Я только подключил секцию, вызвав ошибку в состояние if(x == x) { ... }. Любые идеи, почему эта ошибка внезапно появляется, где раньше не было проблем? – deca 31 January 2018 в 17:06
  • 4
    @deca, я понятия не имею, вы можете попросить об этом в качестве отдельного вопроса. – r.bot 1 February 2018 в 22:10

Если вы сначала загрузите библиотеку MASS и второй dplyr one

library (MASS)
library (dplyr)

, тогда первая версия функции select в вашей сессии searchpaths () будет той, библиотеки dplyr.

Следовательно,

select(mtcars, mpg)

будет работать как

dplyr::select(mtcars, mpg)
4
ответ дан dmontaner 19 August 2018 в 14:22
поделиться

Это случается со мной чаще, чем я должен признать. dplyr сталкиваются с MASS::select, plyr::summarise и stats::filter, среди прочего, особенно при загрузке пакетов, загружающих одну из этих библиотек через библиотеку (они не должны, но некоторые до сих пор) или когда вы загружаете dplyr в свой .Rprofile (не надо!). И это может привести к довольно неясным проблемам, а не всегда к сообщению об ошибке, особенно к конфликтам с plyr.

Я только недавно узнал о функции conflicts(). Это полезно, но конфликты «over-reports», когда два пакета имеют одинаковые функции, например. tidyr :: %>% и dplyr :: %>%.

Итак, я написал функцию , чтобы сказать мне, схожу ли я с ума или есть конфликт, вызывающий текущая ошибка. Он не только проверяет наличие конфликтов, но проверяет, является ли определенный желаемый пакет «сверху» и действительно ли тела функции отличаются.

Он делает это для dplyr по умолчанию, но вы можете указать другой пакет используя параметр want_package. Например, я часто сбиваюсь с помощью recode и alpha, которые повторно используются во многих пакетах.

Использование просто: amigoingmad().

По умолчанию это также автоматически «фиксирует» вещи, если dplyr не «сверху», используя следующие команды:

detach("package:dplyr", character.only = TRUE)
library("dplyr", character.only = TRUE)

Обратите внимание, что функция будет сообщать, если заданная пользователем функция блокирует dplyr, но не исправить это автоматически в целях безопасности (просто удалите функцию в этом случае).

На данный момент это решение не вызвало у меня никаких проблем. Конечно, я бы не стал использовать это в производственном коде, но когда вы отлаживаете файл .Rmd и, возможно, случайно испортили заказ на загрузку, это быстрый способ узнать.

Если вы хотите это в пакете:

devtools::install_github("rubenarslan/formr")
16
ответ дан Ruben 19 August 2018 в 14:22
поделиться
Другие вопросы по тегам:

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