【发布时间】:2012-09-15 23:35:53
【问题描述】:
我有 500 万个序列(具体来说是探测),如下所示。我需要从每个字符串中提取名称。
这里的名字是 1007_s_at:123:381, 10073_s_at:128:385 等等..
我正在使用 lapply 功能,但它花费了太多时间。我还有其他几个类似的文件。你会建议一种更快的方法来做到这一点。
nm = c(
"probe:HG-Focus:1007_s_at:123:381; Interrogation_Position=3570; Antisense;",
"probe:HG-Focus:1007_s_at:128:385; Interrogation_Position=3615; Antisense;",
"probe:HG-Focus:1007_s_at:133:441; Interrogation_Position=3786; Antisense;",
"probe:HG-Focus:1007_s_at:142:13; Interrogation_Position=3878; Antisense;" ,
"probe:HG-Focus:1007_s_at:156:191; Interrogation_Position=3443; Antisense;",
"probe:HTABC:1007_s_at:244:391; Interrogation_Position=3793; Antisense;")
extractProbe <- function(x) sub("probe:", "", strsplit(x, ";", fixed=TRUE)[[1]][1], ignore.case=TRUE)
pr = lapply(nm, extractProbe)
输出
1007_s_at:123:381
1007_s_at:128:385
1007_s_at:133:441
1007_s_at:142:13
1007_s_at:156:191
1007_s_at:244:391
【问题讨论】:
-
老兄,只需将其保存到文本文件中并运行 grep 或类似的东西。您使用了错误的工具。
-
1) 请通过向我们提供一些我们可以轻松放入 R 会话中的代码来使您的示例可重现,2) 在 linux/unix 上尝试
mclapply()或在 Windows 上尝试parlapply以并行运行它.您可能也可以使您的功能更快,但我不会通过将您的数据放入我的 R 会话来找出答案。 -
你能澄清一下“HG-Focus:”是否应该是输出的一部分?
-
HG-Focus 不应该出现在输出中。