[掲示板へもどる]
一括表示

  [No.3297] tr/// に未定義値 投稿者:   投稿日:2017/11/28(Tue) 03:18:26

KH Coder、日頃よりとても便利に利用させて頂いております。特に共起ネットワークからコンコーダンスを呼び出せる機能は秀悦で、手放せなくなりました。

さて、この度は、現在行っている一連の解析でPerlの一部で「tr/// に未定義値の値を渡している」エラーが出ています。
使用しているのはエクセルファイル、エンコーディングはUTF-8、チェックではダメ字等はありません。

エクセル読み込み時に出るエラーは以下の通りです:
Use of uninitialized value in transliteration (tr///) at /</Users/Taka/Desktop/khcoder3/x_mac64>kh_spreadsheet.pm line 37.
Use of uninitialized value $t in substitution (s///) at /</Users/Taka/Desktop/khcoder3/x_mac64>kh_spreadsheet.pm line 38.
Use of uninitialized value $t in substitution (s///) at /</Users/Taka/Desktop/khcoder3/x_mac64>kh_spreadsheet.pm line 39.
Use of uninitialized value $t in print at /</Users/Taka/Desktop/khcoder3/x_mac64>kh_spreadsheet.pm line 40.

当該列から解析対象文書をコピーし、テキストファイルにして解析すると問題がなくなることから、エクセルファイルの読み込みに特化した現象かと思われます。因みに、全てのエクセルファイルで送るわけでもないようです。

当該列は、気長にずっと待っていますと、結果的にエクセルから読み込まれますが、その後前処理をする際にも長時間かかります。

大変お手数をおかけし申し訳ございませんが、どのようなときにこのエラーが出るのか、小生が作成したファイルにどのような不備があり得るのか、ご教示頂ければ幸甚の至る所と存じます。

何卒ご指導の程、お願い申し上げます。


  [No.3298] Re: tr/// に未定義値 投稿者:HIGUCHI Koichi  投稿日:2017/11/28(Tue) 04:24:13

こんにちは、樋口です。書き込みありがとうございます。

可能性として考えられることとしては、実際にデータ(テキストまたは外部変
数)が入力されている列の数よりも、より多くの列を読み込もうとしているの
かもしれません。または実際にデータが入力されているよりも、多くの行を読
もうとしているのかもしれません。

「新規プロジェクト」画面で当該のファイルを選択し、「分析対象とする列」
のプルダウンをクリックして、列の一覧をチェックしてみてください。実際よ
りも多くの列が表示されたり、名前が空白の列があったりしないでしょうか?
あるいは、生成されたテキストファイル(分析対象ファイル名_txt0.txt)の
末尾に、空白セルがたくさん見られないでしょうか?

この現象は「飛び地」のセルにデータが入っていたり、あるいは空白セルで
あっても書式が設定されていると発生すると思います。ご自身で確かにデータ
を入力した範囲(確かに使用するセルの範囲)以外については、選択の上「す
べてクリア」を行なっておくと良いかもしれません。

p.s.
諸事情により先程バージョンナンバーを変えないまま一部更新しました。ご面
倒ですが前回と同じ手順で「x_mac64」を上書きしていただきますと、対応分析・
多次元尺度法についても、語のクリックでKWICが開きます。


  [No.3299] Re: tr/// に未定義値 投稿者:   投稿日:2017/11/28(Tue) 04:46:09

早速のご回答に感謝致します。

末尾の空白セルをチェックさせて頂きましたが、異なるワークシートで関数処理と演算をした際、列ごとコピーしていたことが判明。仰る現象かた致しますと、列コピー時に空白セルも情報としてコピーされていた模様です。これは先ほど異常が出たファイルをチェックした結果、判明致しました。エクセル上では不可視ですので、この現象が起こらない様、今後は入手したデータをテキストエディタに貼り付けてカラ改行の有無をチェックするように致します。

また、エクセルでの処理時、列の全データをコピーする場合、面倒でも画面を分割し、見出し直下(2行目)から最終行のセルをきちんと選んだ方が無難であることを、今さらながら思い出し、反省しております。お騒がせ致しました。陳謝致します。

そして、対応分析とMDSがコンコーダンスポップアップになったとのお知らせを頂戴し、小躍りして喜んでおります。これは朗報ですので早速使用者に通達致します。

重ね重ね、有り難うございました。