Вот еще одно решение:
df$flag_var <- 1*(rowSums(substring(as.matrix(df[, 2:ncol(df)]), 1, 3) == '231') > 0)
# ID cd1 cd2 cd3 cd4 flag_var
# 1 1 231 219 1321 2314 1
# 2 2 222 0
# 3 3 123 142 0
# 4 4 145 521 2313 122 1
Для обновленного примера, поскольку столбцы cd
и столбцы type
спарены, должен работать следующий код:
cd.cols <- grepl('^cd', colnames(df))
type.cols <- grepl('^type', colnames(df))
flag <- substring(as.matrix(df[,cd.cols]), 1, 3) == '231' & df[,type.cols] == '02'
df$flag_var <- 1 * (rowSums(flag) > 0)
# > df
# ID cd1 type1 cd2 type2 cd3 type3 cd4 type4 flag_var
# 1 1 231 02 219 02 1321 02 2314 02 1
# 2 2 222 02 0
# 3 3 123 142 0
# 4 4 145 02 521 02 2313 02 1
# 5 5 231 01 0
Можно вызвать текст в pre
переноситься при помощи следующего CSS
pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
Взятый от этого сайта
Это в настоящее время определяется в CSS3 (который еще не является законченным стандартом), но большинство браузеров, кажется, поддерживает его согласно комментариям.
У Вас есть два конкурирующих требования. Вы любой хочет, чтобы содержание соответствовало в определенной области (т.е.: ширина: 300 пкс), или Вы хотите сохранить пробел и новые строки, поскольку пользователь ввел их. Вы не можете сделать обоих, так как один - по определению - вмешивается в другой.
Так как HTML не является знающим пробелом, Ваши единственные опции изменяют несколько пробелов на " "; и изменение новых строк к <br/>, использование <пред> тег или определение CSS разрабатывают "пробел: пред".
Относительно проблемы с отделением можно всегда заставлять его прокрутить или скорректировать шрифт вниз (это даже возможно динамично на основе длины самой длинной строки в серверном коде).