【发布时间】:2013-11-19 15:11:49
【问题描述】:
我有一个如下所示的行向量:
1 118_o_m_n_a.jpg
2 122_m_f_h_a.jpg
3 152_y_f_n_a.jpg
4 160_y_m_h_a.jpg
5 083_o_m_a_a.jpg
如何提取所有条目,例如,第 9 个元素(字母)为“n”(或“h”,或在本例中为“a”)?
【问题讨论】:
我有一个如下所示的行向量:
1 118_o_m_n_a.jpg
2 122_m_f_h_a.jpg
3 152_y_f_n_a.jpg
4 160_y_m_h_a.jpg
5 083_o_m_a_a.jpg
如何提取所有条目,例如,第 9 个元素(字母)为“n”(或“h”,或在本例中为“a”)?
【问题讨论】:
你可以使用substr提取第9个字母:
substr(c("122_m_f_h_a.jpg", "152_y_f_n_a.jpg"), 9, 9)
[1] "h" "n"
使用== 并为任务的其余部分设置子集。
【讨论】:
一种方法是使用匹配字符串开头的正则表达式("^"),后跟任何类型的 8 个字符 (".{8}"),最后在第 9 个位置上是字符 "n" :
v <- c("118_o_m_n_a.jpg", "122_m_f_h_a.jpg", "152_y_f_n_a.jpg",
"160_y_m_h_a.jpg", "083_o_m_a_a.jpg")
## Find the indices of matching elements
grep("^.{8}n", v)
# [1] 1 3
## Return matching elements
grep("^.{8}n", v, value=TRUE)
# [1] "118_o_m_n_a.jpg" "152_y_f_n_a.jpg"
【讨论】: