私は、"newprice"(下記参照)というデータフレームを持っており、Rのプログラムで列名を変更したいと考えています。
> newprice
Chang. Chang. Chang.
1 100 36 136
2 120 -33 87
3 150 14 164
実際にはこのようにしています。
names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice")
これをループにしていないのは、各列の名前をご覧のように変えたいからです。
このプログラムをRのコンソールに貼り付けると、次のような出力が得られます。
> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"
同様に,paste()
関数の代わりにc()
関数,たとえばc("premium")
を使ってみましたが,効果はありませんでした。
どなたか、この問題を解決する方法を教えてください。
関数 colnames()
を使用します。
R> X <- data.frame(bad=1:3, worse=rnorm(3))
R> X
bad worse
1 1 -2.440467
2 2 1.320113
3 3 -0.306639
R> colnames(X) <- c("good", "better")
R> X
good better
1 1 -2.440467
2 2 1.320113
3 3 -0.306639
サブセットすることもできます。
R> colnames(X)[2] <- "superduper"
エラーの原因は、"smart-quotes"(またはそのような名称のもの)です。 ここでの教訓は、引用符をsmart-quotes"に変換するような 'editor'でコードを書かないことです。
names(newprice)[1]<-paste(“premium”) # error
names(newprice)[1]<-paste("premium") # works
また、paste("premium")
は必要ありませんし(paste
の呼び出しは冗長です)、混乱を避けるために<-
の周りにスペースを入れるのは良いアイデアです(例:x <-10; if(x<-3) "hi" else "bye"; x
)。