标签: strsplit

Octave 将 strsplit 返回值向量化为单独的变量

我有一个包含记录列表的文件,我一次解析一行。每条记录都以换行符分隔,每个值以空格分隔。这只是一个简化的例子,但它具有与真实数据相似的结构。

Bob blue pizza
Sally red sushi
Run Code Online (Sandbox Code Playgroud)

第一个值是名称,然后是他们最喜欢的颜色,然后是他们最喜欢的食物。假设这是在一个处理循环中,我想为每个值设置变量。对于第一行,我的值应该是这样的。

friendsName = "Bob";
favoriteColor = "blue";
favoriteFood = "pizza";
Run Code Online (Sandbox Code Playgroud)

我在行中阅读并开始

lineInFile = "Bob blue pizza";
Run Code Online (Sandbox Code Playgroud)

strsplit 似乎是个好主意,但它输出一个单元格数组而不是一个字符串矩阵,我最终得到

strsplit(lineInFile, " ") =
{
  [1,1] = Bob
  [1,2] = blue
  [1,3] = pizza
}
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

{friendsName,favoriteColor,favoriteFood} = strsplit(lineInFile, " ");
Run Code Online (Sandbox Code Playgroud)

这给了我 error: invalid lvalue function called in expression

数组可以用作左值,所以我试过了

cell2mat(strsplit(lineInFile, " "))
ans = Bobbluepizza
Run Code Online (Sandbox Code Playgroud)

那不是我想要的。

vectorization octave lvalue strsplit

2
推荐指数
1
解决办法
1480
查看次数

strsplit成可变数量的列

这是我之前提到的这个问题的后续内容:R for循环:创建一个新列,其中包含来自不同列的子str的计数

我有一张大桌子(100多个柱子,50k +行).其中一列包含以下格式的数据:

col
chicken
chicken,goat
cow,chicken,goat
cow
Run Code Online (Sandbox Code Playgroud)

我想去:

col         col2         col3
chicken
chicken     goat
cow         chicken      goat
cow
Run Code Online (Sandbox Code Playgroud)

有很多超过3列需要填充,我只是将其剥离为一个例子.我的脚本创建了适当数量的要填充的列,我只需要代码,我假设它是一个for循环,将'col'中的字符串拆分为','然后将拆分字符串放入后续列中.

谢谢你的帮助!

for-loop r multiple-columns string-split strsplit

2
推荐指数
1
解决办法
1488
查看次数

使用strsplit以三种方式分割变量

我有一个我想要拆分的变量......每一行都不同但它有两个字符串表达式用","分隔; 3个字符串表达式用','分隔; 1字符串表达式; 或者什么也没有

例如:

     indel
row1 +1C
row2 +1C,+2CC
row3 0
row4 +1C,+2CC,-1C
Run Code Online (Sandbox Code Playgroud)

基本上我想要做的是为每个可能的三个字符串表达式创建3个不同的变量.当然,有些行会有2个,或1个或没有.

我已经能够使用以下方法拆分并为前两个字符串表达式创建两个不同的变量:

mito$indel1 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[1])
mito$indel2 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[2])
Run Code Online (Sandbox Code Playgroud)

但当然,还有第三个字符串表达式.我正在考虑创建一个临时的indel2变量,然后再将它拆分成第三个,但使用上面的R脚本的问题是它创建变量为:

     indel         Indel1    Indel2
row1 +1C           +1C       NA
row2 +1C,+2CC      +1C       +2CC
row3 0             0         NA
row4 +1C,+2T,-1C   +1C       +2T
Run Code Online (Sandbox Code Playgroud)

我确定这与字符串中的第二个","有关,而R正在变得混乱.但有没有办法克服这一点,而无需编辑每一行的整个变量.

我也试过以下没有运气:

mito$indel2 <- sapply(strsplit(sapply(strsplit(as.character(mito$indel),","),function(x) x[2]),","),function(x) x[1])
mito$indel3 <- sapply(strsplit(sapply(strsplit(as.character(mito$indel),","),function(x) x[2]),","),function(x) x[2])
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

r strsplit

2
推荐指数
2
解决办法
754
查看次数

删除具有缺失值的数据框列中的字符串后的所有内容

我有一个类似于以下摘录的数据框:

Observation Identifier   Value
Obs001      ABC_2001     54
Obs002      ABC_2002     -2
Obs003                   1
Obs004                   1 
Obs005      Def_2001/05  
Run Code Online (Sandbox Code Playgroud)

我想将此数据帧转换为数据框,其中"_"符号后面的部分字符串将被删除:如下图所示:

Observation Identifier_NoTime   Value
Obs001      ABC                 54
Obs002      ABC                 -2
Obs003                          1
Obs004                          1 
Obs005      Def  
Run Code Online (Sandbox Code Playgroud)

我试图用试验strsplit,gsubsub为这里讨论,但不能强迫那些赞扬的工作.我必须说明以下事实:

  1. 列缺少值,我想将它们保留在原来的位置
  2. 字符串"_"位于变量的不同位置
  3. 我还希望保留数据框的其余部分

regex string r gsub strsplit

2
推荐指数
1
解决办法
4576
查看次数

在R中计算出strsplit的输出

我有以下字符串表达式,我应用strsplit:

x="Hello I am using stack overflow to ask this question."
y=strsplit(x,"a")
Run Code Online (Sandbox Code Playgroud)

当有一个'a'时,上面的函数会分割x.根据我的理解,返回的向量应该是一个列表,所以说我想得到x的第二个片段,我应该使用:

y[[2]]
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个错误:

Error in y[[2]] : subscript out of bounds
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题.我想要的只是访问字符串的碎片段.

regex string r strsplit

2
推荐指数
1
解决办法
1213
查看次数

将字符串拆分为列

我有一列有点杂乱的价值观

   Col1
   ----------------------------------------
   B-Lipotropin(S)...............874 BTETLS
   IgE-Dandelion(S).............4578 BTETLS
   Beta Gamma-Globulin..........2807 BTETLS
   Lactate, P
   Phospholipid .........8296 BTETLS
Run Code Online (Sandbox Code Playgroud)

如何将这些值拆分为三列,如下所示

    Col1                        Col2         Col3
    -----------------------------------------------
    B-Lipotropin(S)             874          BTETLS
    IgE-Dandelion(S)            4578         BTETLS
    Beta Gamma-Globulin         2807         BTETLS
    Lactate, P
    Phospholipid                8296         BTETLS
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助.

regex string r strsplit

2
推荐指数
1
解决办法
177
查看次数

更改 R 中的列标题,使用交替的空格和名称(用于 Genalex 格式)

我有一个名为 的数据框genalex,因为我试图将我的基因数据放入常见的“genalex”格式。我刚刚使用了strsplitR 中的函数来拆分列,现在我有了:

> genalex[1:5,1:10]
  Ind V1 V2 V3 V4 V5 V6 V7 V8 V9
1 100  A  A  C  C  N  N  C  C  N
2 101  A  A  C  C  N  N  N  N  N
3  10  A  A  C  C  N  N  C  C  N
4  11  A  A  N  N  N  N  C  C  N
5  12  N  N  N  N  N  N  C  C  G
Run Code Online (Sandbox Code Playgroud)

这个数据框实际上有 330 行和 32,068 列。我想用新名称替换所有其他列(V1、V3、V5、V7、V9 等)的名称。我还想删除所有其他列名(V2、V4、V6、V8 …

replace r names strsplit dataframe

2
推荐指数
1
解决办法
1000
查看次数

如何在R中使用strsplit制作字符串向量?

我有一个文本块,我已经写入R并被读作一个长字符串.

文本块示例:

[1] "abc \n 18:19 \n abc \n 7-9 \n abc \n"
Run Code Online (Sandbox Code Playgroud)

文本块摘要:

summary(text)
Length       Class       Mode
     1   character  character
Run Code Online (Sandbox Code Playgroud)

然后我做了一个strsplit text <- strsplit(text, "\n")

之后的文字摘要 strsplit

summary(text)
      Length    Class        Mode
[1,]  5         -none-  character
Run Code Online (Sandbox Code Playgroud)

我完成的时候我想要什么 strsplit

summary(text)
Length      Class       Mode
     5  character  character 
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.如果需要更多信息,请告诉我.

split r strsplit string-parsing

2
推荐指数
1
解决办法
833
查看次数

在matlab中将字符串拆分为两部分

输入字符串是:

InputStr1 = 'this-is-a-boy-5';
InputStr2 = 'this23-is-a-boy-10';
InputStr3 = 'this-41';
Run Code Online (Sandbox Code Playgroud)

输出应该是:

Output1 = ['this-is-a-boy'] [5]
Output2 = ['this23-is-a-boy'] [10]
Output3 = ['this'] [41]
Run Code Online (Sandbox Code Playgroud)

我想将这些字符串分成两部分,这样我就可以将第一个字符串和最后一个字符分开.我试过strsplit()但它没有帮助.

regex matlab strsplit

2
推荐指数
1
解决办法
365
查看次数

如何在R中使用str_split和regex?

我有这个字符串:

235072,testing,some252f4,14084-things224072,and,other2524,14084-thingies223552,testing,some/2wr24,14084-things
Run Code Online (Sandbox Code Playgroud)

我想用6位数字分割字符串.即 - 我想要这个:

235072,testing,some2wg2f4,wf484-things
224072,and,other25wg4,14-thingies
223552,testing,some/2wr24,14084-things
Run Code Online (Sandbox Code Playgroud)

我如何使用正则表达式执行此操作?以下不起作用(使用stringr包):

> blahblah <- "235072,testing,some252f4,14084-things224072,and,other2524,14084-thingies223552,testing,some/2wr24,14084-things"
> test <- str_split(blahblah, "([0-9]{6}.*)")
> test
[[1]]
[1] "" ""
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

regex r strsplit stringr

2
推荐指数
1
解决办法
328
查看次数