繁体   English   中英

如何在 R 中尽快将宽度为 2 的字符串拆分为数据帧的行

[英]How do I split a string with a width of 2 into rows of a data frame as fast as possible in R

我有以下 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 成数据框的行。 结果应该与上面的 output 匹配。

另外,我听说向量化代码比 for 循环更有效。 如果是这种情况,可以做些什么来向量化这段代码?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM