【发布时间】:2015-09-15 19:49:24
【问题描述】:
我正在尝试提取并粘贴使用 strsplit 生成的列表列表的元素。 例如:
cat<-c("X0831_d8_f1_2s_wt_8_ROI_009", "X0831_d8_f1_2s_wt_8_ROI_008",
"X0831_d8_f1_2s_wt_8_ROI_007", "X0831_d8_f1_2s_wt_8_ROI_006",
"X0831_d8_f1_2s_wt_8_ROI_005", "X0831_d8_f1_2s_wt_8_ROI_004",
"X0831_d8_f1_2s_wt_8_ROI_003", "X0831_d8_f1_2s_wt_8_ROI_002",
"X0831_d8_f1_2s_wt_8_ROI_001", "X0831_d8_f1_10s_wt_8_ROI_019",
"X0831_d8_f1_10s_wt_8_ROI_018")
我可以使用 ldply 生成所需的字符向量:
mouse<-ldply(strsplit(cat, "_"))
paste(mouse$V4,mouse$V8,sep="_")
但正在寻找一种更优雅的方法。也许使用 sapply 或类似的东西?
我可以生成一个包含一个元素的字符向量:
sapply(strsplit(cat, "_"), "[[",4 )
但无法找到一种方法来提取这两个元素(并将它们粘贴在一起)。
【问题讨论】:
-
查看grep,特别是
regexpr和gregexpr,它们会分别给你第一个实例和所有实例的位置。这与substr一起是我做这类工作的方式 -
如果第一个字符串总是以
s结尾,你可以gsub(".*_(\\d+s)_.*_(\\d+$)", "\\1_\\2", cat)
标签: r string list sapply stringr