那是一个数据:
structure(list(Fasta.headers = c("Person01050.1", "Person01080.1",
"Person01090.1", "Person01100.4", "Person01140.1", "Person01220.1"),
ToRemove.Gr_1 = c(0, 1107200, 17096000, 0, 0, 0), ToRemove.Gr_10 = c(0,
37259000, 1104800000, 783870, 0, 1308600), ToRemove.Gr_11 = c(1835800,
53909000, 623960000, 0, 0, 0), ToRemove.Gr_12 = c(0, 19117000,
808600000, 0, 0, 719400), ToRemove.Gr_13 = c(2544200, 2461400,
418770000, 0, 0, 0), ToRemove.Gr_14 = c(5120400, 1373700,
117330000, 0, 0, 0), ToRemove.Gr_15 = c(6623500, 0, 73336000,
0, 0, 0), ToRemove.Gr_16 = c(0, 0, 31761000, 0, 0, 0), ToRemove.Gr_17 = c(13475000,
0, 29387000, 0, 0, 0), ToRemove.Gr_18 = c(7883300, 0, 27476000,
0, 0, 0), ToRemove.Gr_19 = c(82339000, 3254700, 50825000,
0, 0, 0), ToRemove.Gr_2 = c(1584100, 84847000, 5219500000,
6860700, 0, 8337700), ToRemove.Gr_20 = c(205860000, 0, 67685000,
0, 0, 0), ToRemove.Gr_21 = c(867120000, 1984400, 2.26e+08,
0, 0, 10502000)), .Names = c("Fasta.headers", "ToRemove.Gr_1",
"ToRemove.Gr_10", "ToRemove.Gr_11", "ToRemove.Gr_12", "ToRemove.Gr_13",
"ToRemove.Gr_14", "ToRemove.Gr_15", "ToRemove.Gr_16", "ToRemove.Gr_17",
"ToRemove.Gr_18", "ToRemove.Gr_19", "ToRemove.Gr_2", "ToRemove.Gr_20",
"ToRemove.Gr_21"), row.names = c(NA, 6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
正如已经在列名中建议的那样,应从名称中删除“ ToRemove”部分,而仅保留Gr_ *。
对于该问题,我将提供两种解决方案。首先,应基于分配的字符串,删除部分列名称或基于特定字符.(例如)。它应删除点之前或之后的整个部分。
我们可以用 sub
names(df1)[-1] <- sub(".*\\.", "", names(df1)[-1])
Run Code Online (Sandbox Code Playgroud)
如果我们也需要.,请替换为.
names(df1)[-1] <- sub(".*\\.", ".", names(df1)[-1])
Run Code Online (Sandbox Code Playgroud)
为了精确匹配模式,我们还可以匹配零个或多个[^.]*从^字符串的开头()后面不是点t()的字符,后跟一个点(\\.-将该点转义,因为它是一个隐含任何字符的元字符)并替换空白("")
sub("^[^.]*\\.", "", names(df1)[-1])
#[1] "Gr_1" "Gr_10" "Gr_11" "Gr_12" "Gr_13" "Gr_14" "Gr_15" "Gr_16"
#[9] "Gr_17" "Gr_18" "Gr_19" "Gr_2" "Gr_20" "Gr_21"
Run Code Online (Sandbox Code Playgroud)
正如上面已经提到的“ ToRemove”,
sub("ToRemove.", "", names(df1)[-1], fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)
另外,如果我们需要删除所有字符,包括 .
sub("\\..*", "", names(df1)[-1])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1139 次 |
| 最近记录: |