Если ваш data.frame имеет значение df
, один из способов сделать это будет следующим:
df <- data.frame( #an example
var1 = c(1, 2, 3),
var2 = c(-1, 3, 4),
var3 = c(2, 3, -2)
)
df
var1 var2 var3
1 1 -1 2
2 2 3 3
3 3 4 -2
df[apply(df, 1, function(x)
! any(x %in% c(0, -1, -2))), ]
var1 var2 var3
2 2 3 3
Функция apply
работает по строкам df
и имеет значение TRUE
для строк, которые не (!
) имеют значение any
в наборе c(0, -1, -2)
. Этот логический вектор затем используется для подмножества строк df
.
Через регулярное выражение:
:s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/
Если вы делаете это часто, вы можете сделать из него карту, например:
:nmap <F5> :s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/<CR>
Наведите курсор на линию, которую вы хотите перевернуть, и нажмите F5
.
Назначьте комбинацию клавиш для выполнения команды:
:s/^assert_equal \(.*\), \(.*\)$/assert_equal \2, \1
Этот меняет местами слово, на котором находится ваш курсор, со следующим - просто нажмите F9 в командном режиме:
:map <F9> "qdiwdwep"qp
Хм ... Я бы сказал "tdwxx $ i, ^ [" tp но это не очень эффективно и не просто, достаточно просто набрать текст ...
Мне всегда нравился поиск по регулярным выражениям и замена для задач такого типа:
:s/\(\w*\), \(\w*\)/\2, \1/
Поменяет местами первое слово со вторым в списке через запятую.
для чего-то такого простого, я бы просто сделал небольшой макрос
qadf ea, ^[pxxq
, а затем @a away