Как разделить строку шириной 2 на строки фрейма данных как можно быстрее в R - PullRequest
0 голосов
/ 01 октября 2019

У меня есть следующий скрипт R

library(stringr)
library(tibble)
string <- "just_do_its"

string_to_df <- function(string){
  vector_a <- NULL
  for(i in 1:nchar(string)){
    s <- substring(string, i, i+1)
    vector_a[i] <- s
  }
  df_a <- tibble::enframe(vector_a[1:length(vector_a) - 1], name = NULL)
  return(df_a)
}

df_string <- string_to_df(string)

df_string

, который возвращает следующий фрейм данных

> df_string
# A tibble: 10 x 1
   value
   <chr>
 1 ju
 2 us
 3 st
 4 t_
 5 _d
 6 do
 7 o_
 8 _i
 9 it
10 ts

Я хотел бы знать, существуют ли более эффективные способы разбиения строки на 2в строки фрейма данных. Результаты должны соответствовать вышеуказанному выводу.

Кроме того, я слышал, что векторизация кода более эффективна, чем циклы for. Если это так, что можно сделать для векторизации этого кода?

1 Ответ

3 голосов
/ 01 октября 2019

substring векторизовано и доступно в базе R.

ind = sequence(nchar(string))
data.frame(S = substring(text = string, first = head(ind, -1), last = tail(ind, -1)))
#OR in one line
data.frame(S = substring(string, 1:(nchar(string) - 1), 2:nchar(string)))
#    S
#1  ju
#2  us
#3  st
#4  t_
#5  _d
#6  do
#7  o_
#8  _i
#9  it
#10 ts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...