我有一个行向量,如下所示:
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”,在这种情况下)?
答案 0 :(得分:5)
您可以使用substr
提取第9个字母:
substr(c("122_m_f_h_a.jpg", "152_y_f_n_a.jpg"), 9, 9)
[1] "h" "n"
使用==
和子集进行剩余任务。
答案 1 :(得分:3)
一种方法是使用匹配字符串开头的正则表达式("^")
,后跟任意类型的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"
答案 2 :(得分:0)
您可以使用strsplit
:
#dummy data
df <- read.table(text="
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",as.is=T)
#split
df_split <- cbind(df,t(matrix(unlist(strsplit(df$V1,split="_")),nrow=nrow(df))))
df_split
#V1 1 2 3 4 5
#1 118_o_m_n_a.jpg 118 o m n a.jpg
#2 122_m_f_h_a.jpg 122 m f h a.jpg
#3 152_y_f_n_a.jpg 152 y f n a.jpg
#4 160_y_m_h_a.jpg 160 y m h a.jpg
#5 083_o_m_a_a.jpg 083 o m a a.jpg
#filter
df_split[ df_split[,5]=="n",]
#V1 1 2 3 4 5
#1 118_o_m_n_a.jpg 118 o m n a.jpg
#3 152_y_f_n_a.jpg 152 y f n a.jp