Как изменить '55', который читается из файла, на целое число

Обновление в августе 2018 года: этот ответ был написан до появления bookdown, что является более мощным подходом к написанию книг Rmarkdown. Посмотрите минимальный пример bookdown в ответе @ Mikey-Harper!

Когда я хочу разбить большой отчет на отдельный Rmd, я обычно создаю родительский Rmd и включаю главы как дети. Этот подход легко понять новым пользователям, и если вы включаете оглавление (toc), легко перемещаться между главами.

report.Rmd

---  
title: My Report  
output: 
  pdf_document:
    toc: yes 
---

```{r child = 'chapter1.Rmd'}
```

```{r child = 'chapter2.Rmd'}
```

Глава 1.Rmd

# Chapter 1

This is chapter 1.

```{r}
1
```

chapter2.Rmd

# Chapter 2

This is chapter 2.

```{r}
2
```

Build

rmarkdown::render('report.Rmd')

Что производит: My report [/g0]

И если вы хотите быстро создать куски для ваших дочерних документов:

rmd <- list.files(pattern = '*.Rmd', recursive = T)
chunks <- paste0("```{r child = '", rmd, "'}\n```\n")
cat(chunks, sep = '\n')
# ```{r child = 'chapter1.Rmd'}
# ```
#
# ```{r child = 'chapter2.Rmd'}
# ```
0
задан josh sanda 4 March 2019 в 19:30
поделиться

2 ответа

Есть много способов сделать это. Это один из подходов, который использует арифметическое расширение ( https://www.gnu.org/software/bash/manual/html_node/Arithmetic-Expansion.html ).

if [ $(( num + 8 )) -lt 100 ]; then
    num=$(( num + 8 ))
fi

echo $num > storage.txt
0
ответ дан flu 4 March 2019 в 19:30
поделиться

В большинстве (если не во всех) оболочках Unis все переменные хранят строки. Концепция преобразования в целое число не существует.

Но некоторые операции могут принимать строки в качестве входных данных, внутренне преобразовывать их в целые числа, выполнять операцию и возвращать результат в виде строки.

В bash то, что вы намерены делать, может быть записано как:

if [ $(($num + 8)) -lt 100 ]
then
  num=$((num+8))
fi
0
ответ дан mouviciel 4 March 2019 в 19:30
поделиться
Другие вопросы по тегам:

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