R 按每个字符将字符串分隔为列

R 按每个字符将字符串分隔为列,r,string,R,String,在我的数据帧中,我有一个长字符串的列,如下所示 df$string AVDSFBKLDF 我需要的是分离每个字符并为其创建新列。列的名称是q1、q2等。对于类似的情况,如按符号拆分字符串并将其放入新列中,我使用了以下代码 df %>% separate(string, into = paste0('q', 1:10), sep = "") 它工作得很好,但现在当我想按每个字符分割字符串时,我得到一些空白警告,我的控制台和代码不起作用。使用下面的代码。我使用了stringr包str_s

在我的数据帧中,我有一个长字符串的列,如下所示

df$string 
AVDSFBKLDF
我需要的是分离每个字符并为其创建新列。列的名称是q1、q2等。对于类似的情况,如按符号拆分字符串并将其放入新列中,我使用了以下代码

df %>% separate(string, into = paste0('q', 1:10), sep = "")

它工作得很好,但现在当我想按每个字符分割字符串时,我得到一些空白警告,我的控制台和代码不起作用。

使用下面的代码。我使用了stringr包str_split_fixed函数来创建新列

a<- c("AVDSFBKLDF")

library(stringr)
d<- data.frame(str_split_fixed(a, "", max(nchar(a))))
a您可以尝试:

df<- data.frame(string=c("ABCDEF","GH"))
df %>% mutate(v=str_split(string,"(?=.)")) %>% unnest %>%
  filter(v!="") %>% 
  group_by(string) %>% mutate(k=paste0("q",row_number())) %>% ungroup %>%
  spread(k,v) 
## A tibble: 2 x 7
#  string q1    q2    q3    q4    q5    q6   
#  <fct>  <chr> <chr> <chr> <chr> <chr> <chr>
#1 ABCDEF A     B     C     D     E     F    
#2 GH     G     H     <NA>  <NA>  <NA>  <NA>
df%变异(v=str_split(string,(?=)))%%>%unnest%%
过滤器(v!=“”)%>%
分组依据(字符串)%>%mutate(k=paste0(“q”,row\u number()))%>%ungroup%>%
扩散(k,v)
##一个tibble:2x7
#字符串q1 q2 q3 q4 q5 q6
#         
#1 ABCDEF A B C D E F
#2生长激素

<代码> >数据>表>代码>包提供了您可以考虑的函数<代码> TSTRISPLAG/<代码>。< /P>
a<- c("AVDSFBKLDF", "GH", "ABCD")

library(data.table)
DT <- data.table(a)
DT_wide <- DT[, tstrsplit(a, "")]

# change column names
setnames(DT_wide, paste0("q", seq_len(ncol(DT_wide))))
DT_wide
#   q1 q2   q3   q4   q5   q6   q7   q8   q9  q10
#1:  A  V    D    S    F    B    K    L    D    F
#2:  G  H <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
#3:  A  B    C    D <NA> <NA> <NA> <NA> <NA> <NA>

aHiho@Sklenicka。我想多了解一些信息会有帮助。警告是怎么说的。如果运行代码会发生什么。$string中的所有条目是否都有10个字符长?您是否有一些示例数据要共享等。看起来不错,但我不确定如何改变我已经创建的数据帧。我有x%mutate(xy=str\u split\u fixed(string,“,max(nchar(a))),它不起作用,我建议使用mutate将结果保存在新的数据帧中