R 解包字符串并获取字符串的向量

R 解包字符串并获取字符串的向量,r,R,我会解释我的问题是什么。这是我的 单个字符串的列 我想要的是: 如果这些字符串组本身可以存储为向量,那就更好了 总之: 有人知道如何: 首先打开我拥有的字符串列表 在每个字符串中分配字符串的子组,逗号分隔每个所需的字符串。 理想情况下,将子组分配给向量 谢谢你的建议 我们可以使用strsplit进行拆分以获得向量列表 您可以使用tidyr::separate将字符串拆分为多列,必要时插入NAs: library(tidyr) df2 <- separate(df, Column_of_st

我会解释我的问题是什么。这是我的

单个字符串的列

我想要的是:

如果这些字符串组本身可以存储为向量,那就更好了

总之:

有人知道如何:

首先打开我拥有的字符串列表 在每个字符串中分配字符串的子组,逗号分隔每个所需的字符串。 理想情况下,将子组分配给向量 谢谢你的建议

我们可以使用strsplit进行拆分以获得向量列表


您可以使用tidyr::separate将字符串拆分为多列,必要时插入NAs:

library(tidyr)
df2 <- separate(df, Column_of_strings, c('str1', 'str2', 'str3'), sep = ',', fill = 'right')
df2

#     str1 str2 str3
#  1    NI <NA> <NA>
#  2    FA <NA> <NA>
#  3    FI <NA> <NA>
#  4   FST <NA> <NA>
#  5    FA   NI <NA>
#  6    IA   FI   IO
#  7    NI   DI <NA>
#  8    IA   NI   IO
#  9    IA   FT   FI
#  10   FA   FT   FI
#  11   IA  FST   FI

太棒了,创建的lst包含字符串子组的向量。非常感谢你!这个评论上面的数据框不是我想要的。它将向量中的每个对象向上分割,并将每个对象分配到一个单独的列中。尽管如此,cSplit函数对于其他任务可能有用。@InfiniteFlashChess您也可以使用long选项将其转换为“long”格式。它看起来像direction=long在一个垂直列中延伸c IA、FST、FI作为IA、FST、FI,该列每行只有一个子组字符串。这就是为什么当我尝试你的建议时有23个观察结果。我想在每一行中保留字符串的向量,这正是列表所做的。非常感谢!这个链接证实了我所说的,哈哈
df                   
                         Column_of_strings

                         "NI"
                         "FA"
                         "FI"
                         "FST"
                         "FA,NI"
                         "IA,FI,IO"
                         "NI,DI"
                         "IA,NI,IO"
                         "IA,FT,FI"
                         "FA,FT,FI"
                         "IA,FST,FI"
                         Column_of_strings

                         "NI"
                         "FA"
                         "FI"
                         "FST"
                         "FA","NI"
                         "IA","FI","IO"
                         "NI","DI"
                         "IA","NI","IO"
                         "IA","FT","FI"
                         "FA","FT","FI"
                         "IA","FST","FI"
                         Column_of_strings

                         c("NI")
                         c("FA")
                         c("FI")
                         c("FST")
                         c("FA","NI")
                         c("IA","FI","IO")
                         c("NI","DI")
                         c("IA","NI","IO")
                         c("IA","FT","FI")
                         c("FA","FT","FI")
                         c("IA","FST","FI")
lst <- strsplit(as.character(df[,1]), ',')
lapply(lst, table) 
library(tidyr)
df2 <- separate(df, Column_of_strings, c('str1', 'str2', 'str3'), sep = ',', fill = 'right')
df2

#     str1 str2 str3
#  1    NI <NA> <NA>
#  2    FA <NA> <NA>
#  3    FI <NA> <NA>
#  4   FST <NA> <NA>
#  5    FA   NI <NA>
#  6    IA   FI   IO
#  7    NI   DI <NA>
#  8    IA   NI   IO
#  9    IA   FT   FI
#  10   FA   FT   FI
#  11   IA  FST   FI
df2 <- cbind(id = seq_along(df2$str1), df2)
library(reshape2)
melt(df2, id = 'id', na.rm = TRUE)

#     id variable value
#  1   1     str1    NI
#  2   2     str1    FA
#  3   3     str1    FI
#  4   4     str1   FST
#  5   5     str1    FA
#  6   6     str1    IA
#  7   7     str1    NI
#  8   8     str1    IA
#  9   9     str1    IA
#  10 10     str1    FA
#  11 11     str1    IA
#  16  5     str2    NI
#  17  6     str2    FI
#  18  7     str2    DI
#  19  8     str2    NI
#  20  9     str2    FT
#  21 10     str2    FT
#  22 11     str2   FST
#  28  6     str3    IO
#  30  8     str3    IO
#  31  9     str3    FI
#  32 10     str3    FI
#  33 11     str3    FI