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

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

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

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

Q&A

1回答

4606閲覧

Error: $ operator is invalid for atomic vectorsの対応?

orgil

総合スコア10

R

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

0グッド

0クリップ

投稿2019/01/07 09:20

#以下のようなエラーをどう対応すればいいでしょうか。

for(i in c(1:3)){

  • data.sub<- subset(data.sub, ID== data.id[i])
  • data.ma<- as.matrix(data.sub)
  • data.rle<- tapply(data.ma[,4], data.ma[,3], rle)
  • data.0<- cbind(ID= as.character(data.id[i]), Estrus= 0, Value= data.rle$'0'$values, Length= data.rle$'0'$lengths)
  • if(ncol(data.0)== 4){
  • data.0.1<- rbind(data.0.1, data.0)}else{
  • data.0.1<- data.0.1
  • }
  • data.1<- cbind(ID= as.character(data.id[i]), Estrus= 1, Value= data.rle$'1'$values, Length= data.rle$'1'$lengths)
  • if(ncol(data.1)== 4){
  • data.0.1<- rbind(data.0.1, data.1)}else{
  • dara.0.1<- data.0.1
  • }
  • }

Error: $ operator is invalid for atomic vectors

#for(i in c(1:3))の中身の数値を一個ずつに手入力するとエラーが出なく実行されます。
原因は何でしょうか。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

あなたが用意したdata.subがforループの1巡目で変化してしまっていることが原因だと思います。

R

1data.id <- c("setosa","versicolor","virginica") 2data.sub <- iris 3colnames(data.sub)[5] <- "ID" 4data.0.1 <- data.sub

こちらで再現するために、各オブジェクトは上記のように定義しました。

R

1for(i in c(1:3)){ 2data.sub1<- subset(data.sub, ID== data.id[i]) 3data.ma<- as.matrix(data.sub1) 4data.rle<- tapply(data.ma[,4], data.ma[,3], rle) 5data.0<- cbind(ID= as.character(data.id[i]), Estrus= 0, Value= data.rle$'0'$values, Length= data.rle$'0'$lengths) 6if(ncol(data.0)== 4){ 7data.0.1<- rbind(data.0.1, data.0)}else{ 8data.0.1<- data.0.1 9} 10data.1<- cbind(ID= as.character(data.id[i]), Estrus= 1, Value= data.rle$'1'$values, Length= data.rle$'1'$lengths) 11if(ncol(data.1)== 4){ 12data.0.1<- rbind(data.0.1, data.1)}else{ 13dara.0.1<- data.0.1 14} 15}

これならエラーはでませんでした。

投稿2019/02/12 10:59

shimiken

総合スコア368

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問