Преобразование Java в Swift 3: (by @JeremyThompson)
protocol _IntType { }
extension Int: _IntType {}
extension Array where Element: _IntType {
func subsets(to: Int) -> [[Element]]? {
func sum_up_recursive(_ numbers: [Element], _ target: Int, _ partial: [Element], _ solution: inout [[Element]]) {
var sum: Int = 0
for x in partial {
sum += x as! Int
}
if sum == target {
solution.append(partial)
}
guard sum < target else {
return
}
for i in stride(from: 0, to: numbers.count, by: 1) {
var remaining = [Element]()
for j in stride(from: i + 1, to: numbers.count, by: 1) {
remaining.append(numbers[j])
}
var partial_rec = [Element](partial)
partial_rec.append(numbers[i])
sum_up_recursive(remaining, target, partial_rec, &solution)
}
}
var solutions = [[Element]]()
sum_up_recursive(self, to, [Element](), &solutions)
return solutions.count > 0 ? solutions : nil
}
}
использование:
let numbers = [3, 9, 8, 4, 5, 7, 10]
if let solution = numbers.subsets(to: 15) {
print(solution) // output: [[3, 8, 4], [3, 5, 7], [8, 7], [5, 10]]
} else {
print("not possible")
}
Десятичный разделитель, используемый функциями read.table
и write.table
(и большинство их двоюродных братьев), задается параметром «dec». read.csv2
- это особый случай, когда по умолчанию для dec
указано значение «,», а разделитель полей («sep») - «;».
Вы можете изменить выход из печати R, печати и действий функции as.character
. Вы меняете его по умолчанию:
options(OutDec= ",") # read ?options
print( pi )
#[1] 3,141593
options(OutDec= ",") # restore default value
Это НЕ приведет к тому, что R будет обрабатывать числовой ввод с консоли по-разному. Это жестко закодировано для "." как разделитель десятичных чисел.
Если вы применили текстовую функцию к объекту таблицы, вы, возможно, могли бы принуждаться от «числового» к «символьному» режиму, поскольку объекты таблицы в R наследуются от «матрицы» "класс.
Исходя из того факта, что вы хотите использовать его с уценкой (Pandoc), насколько я могу видеть из комментария к блогу , где вы ссылались на этот вопрос , я бы также предложил попробовать my pander package :
> library(pander)
> panderOptions('decimal.mark', ',')
> panderOptions('table.split.table', Inf)
> pander(head(iris))
-------------------------------------------------------------------
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
-------------- ------------- -------------- ------------- ---------
5,1 3,5 1,4 0,2 setosa
4,9 3 1,4 0,2 setosa
4,7 3,2 1,3 0,2 setosa
4,6 3,1 1,5 0,2 setosa
5 3,6 1,4 0,2 setosa
5,4 3,9 1,7 0,4 setosa
-------------------------------------------------------------------
Или PHP Markdown Дополнительный синтаксис для упрощения использования с помощью knitr
:
> pandoc.table(head(iris), style = 'rmarkdown')
| Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
|:--------------:|:-------------:|:--------------:|:-------------:|:---------:|
| 5,1 | 3,5 | 1,4 | 0,2 | setosa |
| 4,9 | 3 | 1,4 | 0,2 | setosa |
| 4,7 | 3,2 | 1,3 | 0,2 | setosa |
| 4,6 | 3,1 | 1,5 | 0,2 | setosa |
| 5 | 3,6 | 1,4 | 0,2 | setosa |
| 5,4 | 3,9 | 1,7 | 0,4 | setosa |
Почему вы хотите использовать «,» как десятичный разделитель, в этом случае, как R будет отображать это выражение R
x <- c(2,3) # (two vectors or one).
Итак, я предполагаю, что вы просто хотите переопределить десятичный разделитель по умолчанию для печати вывода и в этом случае, я думаю, что prettyNum является правильным инструментом.
require(plyr)
head(numcolwise(prettyNum)(iris, dec = ","))
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1 5,1 3,5 1,4 0,2
## 2 4,9 3 1,4 0,2
## 3 4,7 3,2 1,3 0,2
## 4 4,6 3,1 1,5 0,2
## 5 5 3,6 1,4 0,2
## 6 5,4 3,9 1,7 0,4