Почему эта оболочка не может соответствовать

Я бы надеялся, что вы можете обобщить из последний вопрос, на который я ответил - это действительно похоже. Давайте рассмотрим это:

# load sample data
dd = read.table(text = "Barcode_Number, Date_Used
5698, 2018-07-07
4570, 2018-07-11", header = TRUE, sep = ",")

# make sure the date columns is Date class
dd$Date_Used = as.Date(dd$Date_Used)

# get barcode to update
barcode_update <- as.integer(readline(prompt="Enter a Barcode: "))

# make the update
dd[dd$Barcode_Number == barcode_update, "Date_Used"] = Sys.Date()

Теперь давайте сравним ваш последний вопрос, где вы хотели обновить столбец с именем "Times.Used". Мы притворимся, что мы используем одно и то же имя переменной, barcode_update, чтобы удерживать пользовательский ввод:

dd[dd$Barcode_Number == barcode_update, "Date_Used"]  = Sys.Date()
dd[dd$Barcode_Number == barcode_update, "Times.Used"] = df[df$Barcode_Number == tool, "Times.Used"] + 0.5

Левые стороны задания идентичны, формы

dd[dd$Barcode_Number == barcode_update, "Name of column to update"] = ......

Кадр данных ссылается на скобки, используя data_name[rows, columns]. В обоих случаях мы хотим обновить некоторые строки: строки, в которых номер штрих-кода соответствует пользовательскому вводу. Итак, мы делаем этот тест: dd[dd$Barcode_Number == barcode_update, ]. Вы можете обновить третью строку с помощью dd[3, ], 1-й, 2-й и 5-й строк с помощью dd[c(1, 2, 5), ] или использовать какое-то действительно сложное условие, возможно, все штрих-коды, в которых есть 0 в них dd[grepl("0", dd$Barcode_Number), ].

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

Правая сторона получает новое значение. Этот вопрос прост - вы хотите, чтобы новое значение было датой, возвращаемой Sys.Date, поэтому мы делаем = Sys.Date() (или <- Sys.Date(), в зависимости от того, что вы предпочитаете). В предыдущем вопросе вы хотели добавить 0.5 в существующий столбец «Times_Used», поэтому мы помещаем то же самое справа, что и слева, но с прикрепленным + 0.5.

1
задан batmancn 20 January 2019 в 09:33
поделиться

1 ответ

Когда вы добавляете set -x к своему коду, вы получаете больше информации:

+ [[ origin/HEAD -> origin/master =~ \*origin\\/HEAD\* ]]
+ [[ origin/HEAD -> origin/master =~ .*origin/HEAD.* ]]
+ echo OK
OK
+ reg='.*origin\/HEAD.*'
+ [[ origin/HEAD -> origin/master =~ .*origin\/HEAD.* ]]

Специальные символы в назначении используются как обычные символы в одинарных кавычках. Вы видите дополнительные обратные слеши в первой строке, избегая расширения оболочкой.
Ваш reg= также использует одинарные кавычки. Когда вы используете $reg, подстановочные знаки снова раскрываются. Возможно, посмотрите на другой пример:

reg='ls *'
echo "reg (unquoted)="${reg}
echo "reg (quoted)  =${reg}"
0
ответ дан Walter A 20 January 2019 в 09:33
поделиться
Другие вопросы по тегам:

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