为什么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]