Я не думаю, что ggbiplot
имеет аргумент center
, ни scale.
. Вы путаете prcomp
с ggbiplot
аргументами функции?
Следующее работает просто отлично:
library(ggbiplot)
pca <- prcomp(USArrests, center = TRUE, scale. = TRUE)
ggbiplot(pca)
[ 1112] Проверено на ggbiplot_0.55
.
Я приехал в это ТАК вопрос, потому что я хотел быть в состоянии предсказать идентификатор модели, созданной в моем наборе тестов (идентификатор тогда привык запрос REST к внешнему сервису, и я должен был предсказать точное значение для насмешки запроса).
я нашел, что Model.maximum(:id).next
, хотя изящный, не работает в тестовой среде направляющих с транзакционными приспособлениями, так как обычно нет никаких записей в дб, таким образом, он просто возвратится nil
.
Транзакционные приспособления делают проблему дополнительной хитрый начиная с автоматических инкрементных полевых возрастаний, даже когда нет никаких записей в дб. Кроме того, использование ALTER TABLE ***your_table_name*** AUTO_INCREMENT = 100
повреждения транзакция, Ваши тесты находятся в том, потому что это требует своей собственной транзакции.
то, Что я сделал для решения этого, должно было создать новый объект и добавить 1 к его идентификатору:
let!(:my_model_next_id) { FactoryBot.create(:my_model).id + 1 }
, Хотя несколько hacky (и немного неэффективный на Вашем дб, так как Вы создаете дополнительный объект ради его идентификатора), он ничего не делает глупо к транзакции и работает надежно в тестовой среде без записей (если Ваш тестовый прогон параллельно с доступом к тому же дб..., в этом случае: условия состязания..., возможно?).
Принимая ответ fig'а, я хотел бы обратить ваше внимание на одну маленькую вещь. Если вы получаете следующий ID для установки на определенную запись перед сохранением, я думаю, что это не очень хорошая идея.
потому что, например, в веб-системе
Я не уверен, что вы хотите, чтобы последний id делал то, о чем я думаю, но если так, то это просто чтобы привлечь ваше внимание.