我有一个包含记录列表的文件,我一次解析一行。每条记录都以换行符分隔,每个值以空格分隔。这只是一个简化的例子,但它具有与真实数据相似的结构。
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)
那不是我想要的。
这是我之前提到的这个问题的后续内容: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'中的字符串拆分为','然后将拆分字符串放入后续列中.
谢谢你的帮助!
我有一个我想要拆分的变量......每一行都不同但它有两个字符串表达式用","分隔; 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)
任何帮助将不胜感激.
我有一个类似于以下摘录的数据框:
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,gsub并sub为这里讨论,但不能强迫那些赞扬的工作.我必须说明以下事实:
我有以下字符串表达式,我应用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)
我不知道如何解决这个问题.我想要的只是访问字符串的碎片段.
我有一列有点杂乱的价值观
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)
感谢任何帮助.
我有一个名为 的数据框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 …
我有一个文本块,我已经写入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)
任何帮助将不胜感激.如果需要更多信息,请告诉我.
输入字符串是:
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()但它没有帮助.
我有这个字符串:
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)
我错过了什么?