Эквивалент функции вставки R в BASH? - PullRequest
4 голосов
/ 19 февраля 2020

Я пытаюсь перевести этот фрагмент кода R в bash:

year <- 2010
emmissions <- paste("Emmision table from ",year, sep="")
em_table <- read.table(emmissions, head=F, as.is=T)

for (i in 1:nrow(em_table)) {
        print(em_table[i,1])
}

Но не могу понять, как перевести функцию вставки в конкатенацию строки с переменной. Ожидаемым результатом будет перевод этого скрипта в bash код.

Ответы [ 2 ]

4 голосов
/ 19 февраля 2020

Использование возможно echo "Emmision table from ${year}" внутри вашего для l oop что-то вроде ниже:

for var in 2001 2003 2004; 
do 
    echo "Emission table ${var}"
done

Обновлено по запросу OP:

для генерации последовательности в bash, можно сделать: for i in {1..5} для последовательности от 1 до 5 или {0..20..4} для размера шага 4 от последовательности от 0 до 20

Принимая структуру, подобную столбцу, можно сделать это : Предполагается, что таблица с двумя столбцами сохранена в текстовом файле

col1 col2
1 2
3 4
5 6

while read col1 col2
do
    echo "Col1 : $col1"
    echo "Col2 : $col2"
done < table.txt
2 голосов
/ 19 февраля 2020

Уже есть принятый ответ, но вот решение awk.
Протестировано только с одним файлом с именем "test2020".

for var in 2020;
do
  awk '{print $1}' "test${var}"
done

Вывод:

1
2
3

Чтобы прочитать оба столбца, строка кода awk будет иметь вид

awk '{print $1 $2}' "test${var}"

или, поскольку OP говорит, что файлы имеют только два столбца,

awk '{print $0}' "test${var}"

Содержимое файла:

1 a
2 b
3 c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...