指定字符串搜索的列和行

Ros*_*ose 2 wolfram-mathematica row string-search

因为我正在使用一个非常复杂的表,在变量位置有令人讨厌的重复值,所以我想在特定的行和列之间进行字符串搜索.

例如:

table={{"header1", "header2", "header3", 
 "header4"}, {"falsepositive", "falsepositive", "name1", 
 "falsepositive"}, {"falsepositive", "falsepositive", "name2", 
 "falsepositive"}, {"falsepositive", "falsepositive", 
 "falsepositive", "falsepositive"}}

%//TableForm=
 header1          header1          header1          header1
 falsepositive    falsepositive    name1            falsepositive
 falsepositive    falsepositive    name2            falsepositive
 falsepositive    falsepositive    falsepositive    falsepositive
Run Code Online (Sandbox Code Playgroud)

我如何查找字符串,例如,在第三列,第一行到第二行?

我想用来Which根据字符串在表中的位置来分配值.

例如,

Which[string matched in location one, value, matched in location two, value2]
Run Code Online (Sandbox Code Playgroud)

Sjo*_*ies 5

据我所知,你想要测试一个给定的字符串是否在矩阵的某个子部分.您可以使用Part([[...]])和Span(;;)选择这些子部分,您可以使用它们指示范围的范围或子样本.测试此子部分是否包含您的模式可以通过以下方式完成MemberQ:

 MemberQ[table[[1 ;; 2, 3]], "name2"]

 (* ==> False *)

 MemberQ[table[[1 ;; 2, 3]], "header3"]

(* ==> True *)
Run Code Online (Sandbox Code Playgroud)

这样,您的Which语句可能如下所示:

myVar =
 Which[
  MemberQ[table[[1 ;; 2, 3]], "name2"], 5,
  MemberQ[table[[2 ;; 3, 4]], "falsepositive"], 6,
    ...
   True, 20
  ]
Run Code Online (Sandbox Code Playgroud)