Вы можете использовать ifelse
. Если dat
является предоставленным вами data.frame, то должно сработать что-то вроде этого:
dat[, "Target"] <- ifelse(dat[,"Unit"]=="ng/L", dat[,"Target"]/1000, dat[,"Target"])
Если у вас более двух разных юнитов, вам понадобится вложить вызов ifelse
или вызов [ 114] последовательно.
Обратите внимание, что ifelse
является векторизованной версией if
и обрабатывает весь столбец одновременно.
Да, мы можем.
И это также работает с std::vectors
(и так как похоже на использование числовых ключей можно рассмотреть использование их вместо этого).
Небольшой совет: Вы могли бы хотеть передать его как указатель, а не ссылку. Я делаю это для создания этого более очевидным для случайного читателя, что это будет изменено.
Именно все о связи ясно со следующим парнем, приезжающим вниз пика, должно поддержать этот код.
Но кроме этого, да, это - абсолютно свод законов!
Да.
Это не отличается от ввода m[1] = "xyz". Компилятор уменьшит все это приблизительно до того же самого однажды его законченный с ним.
Да, это прекрасно - как все уже сказали - и кроме того, Ваш компилятор скажет Вам, если это не будет. Можно хотеть экспериментировать немного; попытайтесь передать "привет" или (42) к нечто (string&) для получения чувства для предупреждений, которые компилятор дает Вам.