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

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

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

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

Q&A

解決済

1回答

1036閲覧

R list.filesを用いたcbindの方法

birdman

総合スコア10

R

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

0グッド

0クリップ

投稿2020/11/20 13:16

list.filesを用いてディレクトリ内の"a"と付く名前のテキストファイル
"b"が付く名前のテイストファイルをそれぞれa_dataとb_dataに振り分けました
a_dataには"a1.txt""a2.txt""a3.txt"が
b_dataには"b1.txt""b2.txt""b3.txt"が入っています。
a1.txtとb1.txtは21行、a2.txtとb2.txtは22行、a3.txtとb3.txtは23行で同じ行数のファイル同士を結合しようと考えています。
これらをforを使ってcbindで結合するために以下のコードを作りました

a_data <- list.files(pattern = "a") b_data <- list.files(pattern = "b") for (a in a_data[1:length(a_data)]){ for (b in b_data[1:lengthb_data]) { dataset_a <- read.table(a, header=F, sep="\t") dataset_b <- read.table(b, header=F, sep="\t") cbind(dataset_a,dataset_b) -> data}}

しかし、
data.frame(..., check.names = FALSE) でエラー:
引数に異なる列数のデータフレームが含まれています: 21, 22が出てしまいます。
また、dataに上書きされてしまうため別のデータとして分ける方法を教えてください。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

2重ループにしてるのが間違いのもと。
a1とb3とか、全ての組み合わせてcbindしようとしてしまうので、当然失敗する組み合わせが出てきますね。

また、dataに上書きされてしまうため別のデータとして分ける方法

出力先をリストにする。

投稿2020/11/20 15:28

KojiDoi

総合スコア13669

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

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

birdman

2020/11/21 01:13

教えていただきありがとうございます。 今回のような結合をする場合は、他の方法はあるんでしょうか?
KojiDoi

2020/11/21 04:28

まずは1重ループで書き換えてみて目標が達成できるか確認してみることですね。 次の段階としてはapply系の関数で書き換えてみると勉強になるでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問