2013-10-02 143 views
0

相匹配的号码,我需要做的看似简单的东西,但无法找到该函数R,它使单元格的行号。 我有这样的因素列数据帧:查找在数据帧列中的数字,并提取R中

structure(list(A = structure(c(1L, 4L, 2L, 10L, 7L, 3L, 6L, 5L, 
8L, 9L), .Label = c("01WEA8002", "01WEA8007", "01WEA8016", "02WEA8004", 
"02WEA8018", "03WEA8017", "04WEA8015", "07WEA8019", "08WEA8020", 
"09WEA8014"), class = "factor")), .Names = "A", class = "data.frame", row.names = c(NA, 
-10L)) 

我需要给我一个包含给定数量的特定单元格的行编号。 所以说我有

n<-8017 

我想要的代码去列,并期待在这个数字每个细胞,当它发现它的细胞之一的字符串内给我的行数,其中它是位于。因此,对于我的示例(8017),我们可以看到该数字可以在字符串“03WEA8017”中列的第7行中找到。

我提供给可变数目“n”是总是在柱唯一的,因此总会有仅一个含有单词“WEA”后的字符串的末尾该号码细胞。 “WEA”之前的数字可以改变,但我想把重点放在'n'中的数字上,并忽略其余的数字,因为它只能是包含它的一个单元格。

因此,基本上我需要代码来抓取变量'n',转到数据框的列,在每个字符串中查找数字,当它找到它时,给我作为输出行号匹配细胞位于。

我试图尽可能清楚,在此先感谢给予任何帮助。

回答

2
grep("8017", as.character(dataset$A)) 
+0

谢谢:)它的工作原理 – RabidHealer

+0

事实证明,经过一些测试后,我想查找的列中的数字不是唯一的。有时这个数字是另一个更大的数字的一部分。例如,在我的例子中,“8017”是包含“01WEA80178”以及“03WEA8017”的单元格的一部分,使用'grep'时,我得到一个具有两个行号的向量。有没有办法告诉R只查找确切的数字?我的意思是,寻找一个具有我想要的号码的单元格,或者看看确切的字符串“03WEA8017”?请注意,我使用整个字符串,它也可以是另一个字符串的一部分,所以我需要查找确切的字符串,不多也不少。 – RabidHealer

+0

明白了!使用'^'来表示字符串的开始和'$'的结尾。然后我使用了“^ 03WEA8017 $”,我得到了我需要的结果。 – RabidHealer