5

R で 2 つの列を持つ空のデータ フレームを作成しました。

d<-data.frame(id=c(), numobs=c())

このデータフレームを(ループで)出力するリストに追加したいと思いd1ます:

[1] 1  100

私は使用してみましたrbind

d<-rbind(d, d2)

merge:

d<-merge(d, d2)

そして、リストのリストを作成してからデータフレームに変換し、そのデータフレーム名を付けてみました:

d<-rbind(dlist1, dlist2)
dframe<-data.frame(d)
names(dframe)<-c("id","numobs")

しかし、これらのどれもルーチンチェッカーの基準を満たしていないようで (これはクラス用です)、エラーが発生します:

Error: all(names(cc) %in% c("id", "nobs")) is not TRUE

私のワークスペースでは問題なく動作しますが。

エラーが発生している場所がエラーで明らかにならないため、これはイライラします。

2つのデータフレームをマージするか、データフレームにリストを追加するのを手伝ってくれる人はいますか?

4

3 に答える 3

1

まず、ルーチン チェッカーは「id」と「nobs」というラベルの付いた列を探しているようです。それがファイル出力と一致しない場合、そのエラーが発生します。

おそらく同じクラスで、同じエラーが発生したものを使用しています。消えた列名を修正します(2番目の名前には「nobs」ではなく「nob」というラベルを付けました!)これで、ルーチンチェッカーが正しく完了するようになりました...しかし、3つのデータファイルが出力されます、最初と最後のファイルは正しいですが、2 番目のファイルは「申し訳ありませんが、それは正しくありません」という結果になります。これ以上のフィードバックはありません。めんどくさい!

すべてのコースの例でローカルで問題なく実行されるため、ここにコードを投稿しても意味がありません。また、スクリプトが何を求めているのかわからない場合は、デバッグするのが少し難しいです。はぁ。

于 2013-01-15T19:17:22.677 に答える
0

その d2 オブジェクトは、アトミック ベクトルとして出力されます。dput(d2) または str(d2) のいずれかを示していただければ、R リストの理解が深まるかもしれません。さらに、そのコードの最初のビットも、2 列のデータフレームを生成しません。

> d<-data.frame(id=1, numobs=1)[0, ]             # 2-cl dataframe with 0 rows
> dput(d)
structure(list(id = numeric(0), numobs = numeric(0)), .Names = c("id", 
"numobs"), row.names = integer(0), class = "data.frame")
> d2 <- list(id="fifty three", numobs=6)          # names that match names(d)
> rbind(d,d2)
           id numobs
2 fifty three      6
于 2012-10-05T07:25:01.807 に答える