У меня была такая же проблема, потому что моя строка кода была:
txtTotalInvoice.setText(var1.divide(var2).doubleValue() + "");
Я перехожу к этому, читая предыдущий ответ, потому что я не писал десятичную точность:
txtTotalInvoice.setText(var1.divide(var2,4, RoundingMode.HALF_UP).doubleValue() + "");
4 - Десятичная точность
И RoundingMode являются константами Enum, вы можете выбрать любой из этих UP, DOWN, CEILING, FLOOR, HALF_DOWN, HALF_EVEN, HALF_UP
. В этом случае HALF_UP будет иметь следующий результат:
2.4 = 2
2.5 = 3
2.7 = 3
Вы можете проверить информацию RoundingMode
здесь: http://www.javabeat.net/precise-rounding-of-decimals-using-rounding-mode-enumeration/
Несколько перестановок ваших предложенных функций работают, но только если вы указываете аргумент character.only
как TRUE
. Быстрый пример:
lapply(x, require, character.only = TRUE)
для тех, кто хочет установить и загрузить пакеты одновременно, я наткнулся на эту функцию в ссылке ниже https://gist.github.com/stevenworthington/3178163
# ipak function: install and load multiple R packages.
# check to see if packages are installed. Install them if they are not, then load them into the R session.
ipak <- function(pkg){
new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
if (length(new.pkg))
install.packages(new.pkg, dependencies = TRUE)
sapply(pkg, require, character.only = TRUE)
}
# usage
packages <- c("ggplot2", "plyr", "reshape2", "RColorBrewer", "scales", "grid")
ipak(packages)
Вы можете просто использовать пакет lubripack, и он аккуратно устанавливает новые пакеты, а затем загружает их все в одну строку.
lubripack («plyr», «psych», «tm»)
Вот результат после запуска над кодом в RStudio.
Запустить ниже кода для загрузки пакета и установки его из GitHub. Нет необходимости иметь учетную запись GitHub.
library(devtools)
install_github("espanta/lubripack")
Основываясь на решении daroczig, если вы не хотите указывать список в качестве ввода, вы можете использовать
# Foo
mLoad <- function(...) {
sapply(sapply(match.call(), as.character)[-1], require, character.only = TRUE)
}
# Example
mLoad(plyr, dplyr, data.table)
... который короче
lapply(list('plyr', 'dplyr', 'data.table'), require, character.only = TRUE)
Это должно сделать трюк:
lapply(x, FUN = function(X) {
do.call("require", list(X))
})
(Бит ключа в том, что аргумент args
в do.call(what, args)
должен быть списком, даже если он имеет только один элемент! )
Альтернативный вариант из пакета easypackages
. После установки вы можете загружать пакеты наиболее интуитивно понятным способом:
libraries("plyr", "psych", "tm")
В пакет также входит функция установки нескольких пакетов:
packages("plyr", "psych", "tm")
Ссылка здесь .
library
относится к местоположению, где установлены пакеты: пакетная библиотека i>. Загрузка нескольких пакетов через libraries
не имеет смысла. Наличие отдельной функции packages
, которая делает что-то еще, делает это еще хуже. Я знаю, что именование является серьезной проблемой в разработке программного обеспечения, но на самом деле. Эти имена особенно плохи.
– Konrad Rudolph
23 February 2017 в 00:40
Я использую следующую функцию:
mrip <- function(..., install = TRUE){
reqFun <- function(pack) {
if(!suppressWarnings(suppressMessages(require(pack, character.only = TRUE)))) {
message(paste0("unable to load package ", pack,
": attempting to download & then load"))
install.packages(pack)
require(pack, character.only = TRUE)
}
}
lapply(..., reqFun)
}
Это пытается загрузить, а если он не удается установить, а затем попытаться загрузить снова.
Пакет CRAN, который я поддерживаю (автор Dason Kurkiewicz), может выполнить это:
Таким образом, пользователь может сделать:
## install.packages("pacman")
pacman::p_load(dplyr, psych, tm)
и если пакет отсутствует p_load
загрузит его из CRAN или Bioconductor.
p_load
? Более описательное имя, такое как load_packages
, делает назначение функции более ясным.
– Paul Hiemstra
12 January 2014 в 15:27
p_
. Плюс мы склонны немного использовать библиотеку, и это еще 7 символов. 7 символов x ~ 1000000 времени использования функции x .5 секунд на символ = 3500000 секунд. Это 58333,33 минуты, 972,2222 часа или 40,50926 дней жизни программиста, которые мы им вернули :-) В любом случае наша цель - нажать на CRAN к 1 февраля
– Tyler Rinker
12 January 2014 в 15:44
p_
довольно сомнительно. Если проблема связана с проблемой, полностью удалите префикс p_
. Фактически, наличие таких префиксов обычно не рекомендуется на других языках по уважительным причинам (я сказал Хэдли о том же, что касается его fct_
ерунды в силах). Это особенно i> true, так как предполагаемое использование th-пакета имеет квалифицированное пространство имен (pacman::
).
– Konrad Rudolph
23 February 2017 в 00:36
x
? – daroczig 1 November 2012 в 16:54lapply
трюк, родной кlibrary()
. Будьте здоровы, чтобы сказать:library(c("plyr", "umx"))
– tim 28 June 2015 в 18:56