2

さまざまな場所に厄介な値が繰り返される非常に複雑なテーブルを扱っているため、特定の行と列の間で文字列検索を行いたいと考えています。

例えば:

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

たとえば、列 3、行 1 ~ 2 の文字列を探すにはどうすればよいですか?

Whichテーブル内の文字列の位置に基づいて値を割り当てるために使用したいと思います。

例えば、

Which[string matched in location one, value, matched in location two, value2]
4

3 に答える 3

5

私が理解しているように、特定の文字列がマトリックスの特定のサブセクションにあるかどうかをテストする必要があります。これらのサブセクションは、Part([[...]]) とSpan(;;) を使用して選択でき、範囲または範囲のサブサンプルを示すことができます。このサブセクションにパターンが含まれているかどうかのテストはMemberQ、次のように で実行できます。

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

 (* ==> False *)

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

(* ==> True *)

このようにして、Whichステートメントは次のようになります。

myVar =
 Which[
  MemberQ[table[[1 ;; 2, 3]], "name2"], 5,
  MemberQ[table[[2 ;; 3, 4]], "falsepositive"], 6,
    ...
   True, 20
  ]
于 2011-08-05T22:29:16.657 に答える
2
Length[Cases[Position[table, "name1"], {1 | 2, 3}]] >= 1

出力 -> True

または

Cases[Position[table, "name1"], {1 | 2, 3}]

出力 -> {{2, 3}}

于 2011-08-06T16:25:41.510 に答える
1

おそらく、私があなたを理解していれば:

f[table_, value_, rowmin_, rowmax_, colmin_, colmax_] := 
 Select[Position[table, value], 
  rowmin <= First@# <= rowmax && colmin <= Last@# <= colmax &]
f[table, "name1", 1, 10, 1, 10]
(*
-> {{2, 3}}
*)
于 2011-08-05T18:48:01.333 に答える