Что самый быстрый путь состоит в том, чтобы инвертировать разделенный запятыми список в энергии?

Если ваш 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.

10
задан Mu Mind 23 November 2012 в 20:54
поделиться

6 ответов

Через регулярное выражение:

:s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/

Если вы делаете это часто, вы можете сделать из него карту, например:

:nmap <F5> :s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/<CR>

Наведите курсор на линию, которую вы хотите перевернуть, и нажмите F5 .

6
ответ дан 3 December 2019 в 23:51
поделиться

Назначьте комбинацию клавиш для выполнения команды:

:s/^assert_equal \(.*\), \(.*\)$/assert_equal \2, \1
1
ответ дан 3 December 2019 в 23:51
поделиться

Этот меняет местами слово, на котором находится ваш курсор, со следующим - просто нажмите F9 в командном режиме:

:map <F9> "qdiwdwep"qp
  • "qdiw: положить слово, на котором находится ваш курсор, в буфер 'q'
  • dw: удалить все символы в начале следующего слова (возможно, запятая + пробел)
  • e: перейти к концу слова
  • p : Вставить (запятая + пробел)
  • "qp: Вставить буфер 'q' (первое слово)
5
ответ дан 3 December 2019 в 23:51
поделиться

Хм ... Я бы сказал "tdwxx $ i, ^ [" tp но это не очень эффективно и не просто, достаточно просто набрать текст ...

0
ответ дан 3 December 2019 в 23:51
поделиться

Мне всегда нравился поиск по регулярным выражениям и замена для задач такого типа:

:s/\(\w*\), \(\w*\)/\2, \1/

Поменяет местами первое слово со вторым в списке через запятую.

1
ответ дан 3 December 2019 в 23:51
поделиться

для чего-то такого простого, я бы просто сделал небольшой макрос

qadf ea, ^[pxxq

, а затем @a away

0
ответ дан 3 December 2019 в 23:51
поделиться
Другие вопросы по тегам:

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