循环遍历R中的列并提取字符

时间:2015-09-07 02:39:51

标签: r loops slice

我有一个数据框,一列有蛋白质ID和一堆荒谬的东西,如下图所示。我想要的ID总是第4到第9个字符,所以我想循环遍历列并提取这些以将它们导出到另一个csv文件。该列也充满了NA,我不想要。我想要在R中设置一个循环,它会在每次切出我想要的确切字符时如果有NA则不执行任何操作,然后在找到空白时停止,因为这将是列表的结尾。 / p>

的模拟示例
Prot Id's
sp|IDIDID|PSKSJ_45HELI^sp|IDIDID|FRUEHFJ^HSLHFHG#%$^9y7hiuahl
sp|IDIDID|PSKSJ_45HELI^spuegfuehfw3|IDIDID|FRUEHFJ^HDGFLFHEHFN
NA
NA
sp|IDIDID|PSKSJ_45HELIWUEU^#H63hHU6e^sp|IDIDID|FRUEHFJ^HFGHG:WHFUWH^hfue
NA
sp|IDIDID|PSKSJ_45HELI^spJFBEFBUEBFE|IDIDID|FRUEHFJ^
NA
NA

说IDIDID的部分是我想要的,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

使用x = c("sp|456879|sequence1","sp|121212|sequence2",NA) d = data.frame(Prot_Id = x) substr(d[!is.na(d$Prot_Id),],4,9) 功能提取所需的范围:

[1] "456879" "121212"

输出:

.then()