[英]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.