質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

2回答

5329閲覧

(R言語)data読み込みができません。

uka7y

総合スコア4

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2020/04/04 13:22

すみません。何度も試行錯誤しているのですが、以下の操作ができません。
ご教授いただければ幸いです。


data読み込みができません。
data<-read.table("abc.txt", header=TRUE, fileEncoding="CP932")

abc.txt はタブによるテーブル用のデータ区切りをしています。

これを実行すると、
Warning messages:
1: In read.table("abc.txt", header = TRUE, fileEncoding = "CP932") :
invalid input found on input connection 'abc.txt'
2: In read.table("abc.txt", header = TRUE, fileEncoding = "CP932") :
incomplete final line found by readTableHeader on 'abc.txt'

のメッセージが出て読み込めないのですが、原因としては何が考えられるでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

data<-read.table("abc.txt", header=TRUE, fileEncoding="CP932")

これだと「タブ区切りのテキスト」は恐らく期待通りに読み込めません。セパレータにタブを指定していないからです。

?read.tableすると次のような記述が見つかるはずです。

sep: the field separator character. Values on each line of the

file are separated by this character. If 'sep = ""' (the default for 'read.table') the separator is 'white space', that is one or more spaces, tabs, newlines or carriage returns.

つまりタブ以外にスペースなども区切り文字になります。結果、行ごとにデータの数がバラバラなデータと解釈され、質問のようなエラーに至ると考えられます。sep="\t"をつければうまくいくでしょう。

マニュアルをチェックする習慣と、出てきたエラーを丸ごとグーグルの検索欄に突っ込んでググる方法を身につけましょう。

投稿2020/04/05 06:52

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uka7y

2020/04/06 00:23

コメントありがとうございます。 結果は以下のようになり、やはりエラーが出てしまいます。 > data<-read.table("Book1.txt", header=TRUE, sep="\t", fileEncoding="CP932") Warning messages: 1: In read.table("Book1.txt", header = TRUE, sep = "\t", fileEncoding = "CP932") : invalid input found on input connection 'Book1.txt' 2: In read.table("Book1.txt", header = TRUE, sep = "\t", fileEncoding = "CP932") : incomplete final line found by readTableHeader on 'Book1.txt'
KojiDoi

2020/04/06 04:26

ではコードではなくそのファイルに何か不備があるということです。我々にはその内容が分からないので、そのファイルの内容を出していただかないと、これ以上の検証はできません。
uka7y

2020/04/07 00:28

コメントありがとうございます。 Book1.txtの内容: 店舗 売上 田中 4859 斎藤 3895 久石 4950 加藤 3958 佐藤 4967 久本 3859 石田 3845 と、タブ区切りで各店舗とその売り上げを表示したものです。
KojiDoi

2020/04/09 08:41

ファイルの終わりに改行コードがない可能性は?
uka7y

2020/04/09 09:23

改行コードを入れたことを確認して再度実行致しましたが、以前と同様のエラーが表示されてしまいます。
KojiDoi

2020/04/09 10:27

こちらでもやってみましたが一向にエラーは再現できません。 以下を実行すると何が表示されますか? readLines("Book1.txt")
uka7y

2020/04/10 04:48

readLines("Book1.txt") で実行すると、文字化けした結果が表示されたため、 Book1.txtファイルの中身をすべて英語に変更し、 data<-read.table("Book1.txt", header=TRUE, fileEncoding="CP932") を実行してみましたところ、無事表示されました。 ご迷惑おかけしました。 ちなみに、PCを再起動してからRを開き、 data<-read.table("Book1.txt", header=TRUE, fileEncoding="CP932") を日本語で行った場合、今度は > data [1] X. <0 rows> (or 0-length row.names) という結果が表示され、 英語の場合では、 > data branch sales 1 Tanaka 4859 2 Saito 3895 3 Ueda 4950 4 Kato 3958 5 Saito 4967 6 Katsu 3859 7 Ishida 3845 となりました。
KojiDoi

2020/04/10 06:23

いわゆる半角文字に問題がないのであれば、問題はエンコーディングである可能性が高そうです。 問題のファイルの中身が実はシフトJISではなくUTF-8なのでは? 最近のエクセルやメモ帳はデフォルトがUTF-8のはずですが、そのへんは確認しましたか?
uka7y

2020/04/11 05:40

シフトJISと、UTF-8を両方試してみました。 メモ帳をUTF-8として保存し、"reopening with encoding..."からUTF-8を選択して開きましたが、文字化けしてしまいます。 またメモ帳をANSIとして保存し、シフトJISで開きましたが、文字化けしました。 Rをインストールしたときから、日本語使用に変換できない、working directoryを変更できないなど少々不具合があったので、その影響かもしれません。これは何度インストールをやり直しても直りませんでした。
KojiDoi

2020/04/11 06:18

>メモ帳をUTF-8として保存し、 ちょっと意味が解りません。いったいどうやってデータを作っているのですか? メモ帳が登場する余地はありません。エクセルからタブ区切りテキストとしてエクスポートしたファイルをそのまま読み込んでください。
uka7y

2020/04/11 08:56

すみません、テキストにはメモ帳で作成するように指示されていたので、メモ帳でデータを作成していました。 ちなみにexcelでも試したのですが、文字化けしてしまいます。
KojiDoi

2020/04/11 11:32

>ちなみにexcelでも試したのですが、文字化けしてしまいます。 もうちょっとちゃんと書いてもらえますか? excelで何を試したのですか? そのファイルはどういう設定で保存したものですか? そのファイルの文字コードはどうやって確認しましたか?
KojiDoi

2020/04/11 11:36

アルファベットと数字だけのファイルでは問題なかったということから、エンコードの問題であることはほぼ確実です。シフトJISと思っていたのがそうではなかった、UTF-8と思っていたものがそうではなかったという類です。ちなみに半角英数文字はUTF-8だろうがシフトJISだろうが共通なので、これはエンコードの設定関係なく処理できるはずです。というわけなので一つ一つのステップを何となくでやらずに、一歩一歩何をやったか確認していかないと問題は解決できないでしょう。
uka7y

2020/04/13 03:57

エクセルからタブ区切りテキストとしてエクスポートしたファイルをそのまま読み込みました。 詳しく申し上げますと、エクセルで 店舗 売上 田中 3546 斎藤 3546 金田 2546 上島 3466 下田 4567 藤田 3465 の表を作成し、「名前を付けて保存」からタブ区切りtxtとして、保存しました。(ファイル名はBook4.txt) そのファイルがANSIであることをどうやって確認したかと申しますと、 エクスプローラーにて、タブ区切りtxtとして保存された当ファイルを開き、 もう一度「名前を付けて保存」のボタンを押しますと、そのファイルの「文字コード」情報が表示されるので、そこでANSIであることを確認致しました。 R studioにて、Open fileで先ほどのファイルを開きます。すると文字化けしてソースファイル上に表示されますので、Reopen with encodingにてSHIFT-JISを選択します。そうしますとソースファイル上では文字化けせずに表示されます。 しかし、ソースコード data <- read.table ("Book4.txt")を実行しますと、コンソール上には文字化けして表示されます。テキストにあるように、environment ビューに表示されているdataをクリックして表を表示させても、文字化けしています。 そこで、今度は当ファイルをUTF-8として保存します。 先ほどと同じように、「名前をつけて保存」からANSIをUTF-8に変更して保存します。 R studioにて、open file でUTF-8として保存したBook4.txtを開きます。 reopen with encodingにて、UTF-8として開きますと、文字化けせずに表示されます。 data <- read.table("Book4.txt")をもう一度実行しますと、コンソールには文字化けした結果が表示されます。environment ビューに表示されているdataをクリックして表を表示させても、文字化けしています。 ご迷惑おかけして申し訳ありません。 文章で至らない部分がありましたら、ご指摘くだされば幸いです。
KojiDoi

2020/04/13 05:24

エラーは出ないようになりましたか? そうであれば、あとはlocaleの問題かもしれません。 https://blog.goo.ne.jp/r-de-r/e/084639aec24beb8a6d08b8241545ef1a データそのものが期待したエンコーディングになっていないようなら、iconv(データ,from="cp932",to="utf8")のように関数を使って変換することもできます。
uka7y

2020/04/18 08:17

長い間ありがとうございました。 やはり結果は同じです...。 違うパソコンでRをインストールして同様の作業をしたところ不備なく行えたので、 やはりインストールの時点から問題があるものと思います。 しばらく英語のみで作業していこうと思います。 ありがとうございました。
guest

0

1、ファイルにBOMがついているとエラーがでるようです。

R

1fileEncoding = "CP932-BOM"

とするか、テキストファイルからBOMを消せば通るかもしれません。


2、最終行が読めないとあるので、改行や区切り文字が入っていないのかもしれません。
最初の数行のみコピペしたファイルなどは読み込めますでしょうか。

投稿2020/04/04 13:52

nasudeng

総合スコア89

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uka7y

2020/04/05 00:25

回答ありがとうございます。 1BOMを消してみましたが、うまくいきませんでした。 > data<-read.table("abc3.txt", header=TRUE, fileEncoding="CP932-BOM") Warning messages: 1: In read.table("abc3.txt", header = TRUE, fileEncoding = "CP932-BOM") : invalid input found on input connection 'abc3.txt' 2: In read.table("abc3.txt", header = TRUE, fileEncoding = "CP932-BOM") : incomplete final line found by readTableHeader on 'abc3.txt' 2 最初の数行のみコピペしたファイルで行ってみましたが、1と同じ結果になってしましました。
nasudeng

2020/04/05 05:14 編集

```abc.txt name age takashi 10 hiroyuki 20 ``` を読み込んでみたところ ```R > data<-read.table("hoge.txt",sep = "\t" , header=TRUE, fileEncoding="CP932-BOM") > print(data) name age 1 takashi 10 2 hiroyuki 20 ``` とエラーが出ずに通りました。 別のtsv形式のファイルでも同様のエラーは確認できていますか? Rstdio v 1.2.5019にて実行
uka7y

2020/04/05 06:43

エクセルで作成し、それをタブ区切りのtxt形式にして保存した結果が以下となりました。 ``` > data<-read.table("Book1.txt", header=TRUE, fileEncoding="CP932-BOM") Warning messages: 1: In read.table("Book1.txt", header = TRUE, fileEncoding = "CP932-BOM") : invalid input found on input connection 'Book1.txt' 2: In read.table("Book1.txt", header = TRUE, fileEncoding = "CP932-BOM") : incomplete final line found by readTableHeader on 'Book1.txt' ``` また、コンマ区切りcsv形式でも保存して試みましたが、エラーが表示されます。 ``` > data<-read.table("Book2.csv", header=TRUE, fileEncoding="CP932-BOM") Warning messages: 1: In read.table("Book2.csv", header = TRUE, fileEncoding = "CP932-BOM") : invalid input found on input connection 'Book2.csv' 2: In read.table("Book2.csv", header = TRUE, fileEncoding = "CP932-BOM") : incomplete final line found by readTableHeader on 'Book2.csv' ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問