我想删除数据框中的部分rownames。我想删除与下面的grepl中定义的字符串不匹配的所有内容,并将其替换为后面定义的字符串。有谁知道吗?
df[grepl(".*lncRNA.*|.*snRNA.*|.*snoRNA.*|.*precursor_RNA.*", rownames(df))] <- c("lncRNA","snRNA","snoRNA","precursor_RNA")
head(rownames(df))
[3208] "URS000075AF9C-snoRNA_GTATGTGTGGACAGCACTGAGACTGAGTCT"
[3209] "URS000075B029-snRNA_AACTCTGAGTCTTAAGCTAATTTTTTGAGGCCTTGTTCCGACA"
[3210] "URS000075B029-snRNA_ATTTCCGTGGAGAGGAACAACTCTGAGTCTTAAGCTAATTT"
[3211] "URS000075B0E3-lncRNA_GTAAGGGGCAGTAAG"
[3212] "URS000075B261-precursor_RNA_CTTTCTATGCTCCTGTTCTGC"
[3213] "URS000075B2ED-lncRNA_CACTCAGGACCCACC"
出
[3208] "snoRNA"
[3209] "snRNA"
[3210] "snRNA"
[3211] "lncRNA"
[3212] "precursor_RNA"
[3213] "lncRNA"
答案 0 :(得分:4)
我们可以使用gsub
来匹配字符串的开头(-
)之后不是[^-]+
(^
)的一个或多个字符,后跟一个{ {1}}或(-
)一个或多个不是下划线(|
)的字符,直到字符串结尾([^_]+
)并将其替换为空格({{1} }})。
$
如果我们在rownames上执行此操作
""
gsub("^[^-]+-|_[^_]+$", "", v1)
#[1] "snoRNA" "snRNA" "snRNA" "lncRNA"
#[5] "precursor_RNA" "lncRNA"
答案 1 :(得分:4)
欢迎使用StackOverflow!您已经为我们提供了一些示例输入和输出,但请考虑提供reproducible example以便我们更方便地为您提供帮助。
在您的情况下,我认为您可以使用"runtimes": {
"debian.8-x64" : {}
},
,捕捉中间,以及替换中的;WITH CTE
AS
(
SELECT 1 AS ANCHOR
UNION ALL
SELECT A.ANCHOR +1 FROM CTE A
)
SELECT TOP 100 CONCAT('a',RIGHT(CONCAT('00000',ANCHOR),6)) AS RecurrenceValue FROM CTE OPTION (MAXRECURSION 0)
。
sub
Rownames必须是唯一的,因此您可能需要将结果存储在数据框的一列中(或者您可以使用\1
使其唯一,但我认为将结果保存为列中的你的数据框会更有意义。)