Как быстро добавить кавычки и запятые в список элементов для c () в R? - PullRequest
0 голосов
/ 04 марта 2019

Это вопрос удобства больше всего на свете.Я часто добавляю кавычки и запятые вручную, чтобы составить список ac () для какой-то другой функции.Есть ли быстрый и умный способ добавить их, который не требует сложного поиска / замены или нескольких операций?Если у меня есть несколько элементов, разделенных пробелом или табуляцией, или один элемент в строке, я бы хотел сделать следующее:

ABCD

или

A

B

C

D

до:

temp <- c("A", "B", "C", "D")

Я могу добавить их вручную, выполнить поиск / замену пробельных символовв «,», а затем добавить в первый / последний, но это раздражает.Есть ли более быстрый способ?

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Функция scan является основой для всех функций read.*, но она также служит для выполнения задачи, которую вы хотите выполнить.Пару лет назад был добавлен параметр text, поэтому вам больше не нужно наматывать textConnection вокруг «голых строк».Может использоваться с любым разделителем, и разделитель пробелов по умолчанию будет обрабатывать то, что yopu просит обработать:

 TEMP <- scan(text="A B C D", what="")

#-------------------
Read 4 items
> TEMP
[1] "A" "B" "C" "D"
> dput(TEMP)
c("A", "B", "C", "D")
0 голосов
/ 05 марта 2019

Даже если это немного сложно, вы можете создать и использовать несколько курсоров в RStudio.

Несколько курсоров могут быть созданы различными способами:

Нажмите Ctrl + Alt + {Вверх / Вниз}, чтобы создать новый курсор в направлении нажатия,

НажмитеCtrl + Alt + Shift + {Направление} для перемещения второго курсора в указанном направлении,

Используйте Alt и перетащите мышью для создания прямоугольного выделения,

Используйте Alt + Shift и нажмитечтобы создать прямоугольное выделение из текущей позиции курсора в позицию щелчка.

Взято из здесь и gif того, как это выглядит: enter image description here

0 голосов
/ 04 марта 2019

Здесь представлены опции как для базовых строковых функций R, так и для stringr.В обоих случаях идея состоит в том, чтобы разделить текст в каждом пробеле, а затем заменить границы слов одинарной кавычкой (').Причиной этого является отличие от двойных кавычек ("), которые начинаются и заканчиваются строкой, т. Е. Иметь кавычки в строке.Вы должны быть в состоянии сделать то же самое, избегая двойных кавычек (\\"), но я нахожу, что редко сопоставляю их должным образом, когда пытаюсь это сделать, поэтому я не проверял это.Затем вы свернете этот вектор строк обратно запятыми (это также может быть запятая, за которой следует пробел).

С базовыми функциями:

library(dplyr)
library(stringr)
txt <- "A B C D"

split_txt <- strsplit(txt, split = "\\s")[[1]]

quoted <- gsub("\\b", "'", split_txt)

paste(quoted, collapse = ",")
#> [1] "'A','B','C','D'"

Или с обратными точками:

txt %>%
  str_split("\\s") %>%
  `[[`(1) %>%
  str_replace_all("\\b", "'") %>%
  str_flatten(collapse = ",")
#> [1] "'A','B','C','D'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...