Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么string::str_split在dplyr::mutate时不更新数据帧_R_Dplyr_Stringr - Fatal编程技术网

为什么string::str_split在dplyr::mutate时不更新数据帧

为什么string::str_split在dplyr::mutate时不更新数据帧,r,dplyr,stringr,R,Dplyr,Stringr,我有以下数据框: df gene\u id samplename gene\u expr #>1 RNA18S5 XX_135_S14.脂肪6533029 #>2 RNA18S5 XX_133_S12.脂肪5494889 #>3 RNA18S5 XX_128_S7.5491158 #>4 RNA18S5 XX_117_S11.5232914 #>5 RNA18S5 XX_124_S3.5151004 我要做的是拆分samplename并创建新列 我试过这个: 库(tidyverse) df

我有以下数据框:


df gene\u id samplename gene\u expr
#>1 RNA18S5 XX_135_S14.脂肪6533029
#>2 RNA18S5 XX_133_S12.脂肪5494889
#>3 RNA18S5 XX_128_S7.5491158
#>4 RNA18S5 XX_117_S11.5232914
#>5 RNA18S5 XX_124_S3.5151004
我要做的是拆分
samplename
并创建新列

我试过这个:

库(tidyverse)
df%
突变(subtype=stringr::str\u split(samplename,“\\”)[[1]][2])
df
因此:

#一个tible:5 x 4
基因id samplename基因expr亚型
1 RNA18S5 XX_135_S14.脂肪6533029脂肪
2 RNA18S5 XX_133_S12.脂肪5494889脂肪
3 RNA18S5 XX_128_S7.5491158脐带脂肪
4 RNA18S5 XX_117_S11.肝脏5232914脂肪
5 RNA18S5 XX_124_S3.肺5151004脂肪
请注意,“子类型”列不正确。我预计产出为:

gene_id samplename gene_expr子类型
1 RNA18S5 XX_135_S14.脂肪6533029脂肪
2 RNA18S5 XX_133_S12.脂肪5494889脂肪
3 RNA18S5 XX_128_S7.脐带电缆5491158脐带电缆
4 RNA18S5 XX_117_S11.肝脏5232914肝脏
5 RNA18S5 XX_124_S3.肺部5151004肺部

正确的方法是什么?

这里有一个
extract

library(tidyverse)
df %>% 
  extract(samplename, into = 'subtype', '.*\\.([^.]+)', remove = FALSE)
# A tibble: 5 x 4
#  gene_id          samplename   subtype gene_expr
#*   <chr>               <chr>     <chr>     <int>
#1 RNA18S5  XX_135_S14.Adipose   Adipose   6533029
#2 RNA18S5  XX_133_S12.Adipose   Adipose   5494889
#3 RNA18S5 XX_128_S7.Umbilical Umbilical   5491158
#4 RNA18S5    XX_117_S11.Liver     Liver   5232914
#5 RNA18S5 XX_124_S3.Pulmonary Pulmonary   5151004
库(tidyverse)
df%>%
提取(samplename,into='subtype','.\\.([^.]+)',remove=FALSE)
#一个tibble:5x4
#基因id samplename亚型基因表达
#*                            
#1 RNA18S5 XX_135_S14.脂肪脂肪65029
#2 RNA18S5 XX_133_S12.脂肪脂肪5494889
#3 RNA18S5 XX_128_S7.5491158
#4 RNA18S5 XX_117_S11.肝脏5232914
#5 RNA18S5 XX_124_S3.肺部5151004

您实际上不需要拆分
df%>%mutate(subtype=sub('.\\.','',samplename))
应该足够了,但如果您确实想拆分,最好使用
str\u split\u fixed
<代码>字符串::str_split_fixed(df$samplename,“\\\”,2)[,2]