0

今日私を逃しているように見える単純なものをもっと「そうあるべきだと感じます」。よろしくお願いします。

関数内のループ内で、列を追加して、式に基づいて名前を付けようとしています。

列をバインドでき、その名前はバインドされたオブジェクトから取得されます。data<-cbind(data,bothdata)

列をバインドし、バインドされたオブジェクトに手動で名前を付けることができます。data<-cbind(data,newname=bothdata)

方程式の積である列をバインドし、バインドされたオブジェクトに手動で名前を付けることができます。data<-cbind(data,newname2=bothdata-1)

または別の方法:data <- transform(data, newColumn = bothdata-1)

私ができないのは、名前を式の積にすることです。私の実際の数式から派生した例の名前はpaste("E_wgt",rev(which(rev(Esteps) == q))-1,"%")、列の & 方程式:baddata - qです。

より単純なもの: data<-cbind(data,paste("magic",100,"beans")=bothdata-1). 前の例でcbindはうまくいきましたが、期待していないため、これは失敗します。=についても同じ失敗transform

私の最初の考えは、フォーラム名のオブジェクトを作成するためにこれをうまく使用しましたが、式の名前の列assignに対してそれを機能させる方法がわかりません。

中間ステップを使用して名前付け式をオブジェクト コンテナーに配置する場合は、それを使用します。

name <- paste("magic",100,"beans")
data<-cbind(data,name=bothdata-1)

列名は「magic100beans」ではなく「name」です。assign式の結果が式名のオブジェクトになる場合:

assign(paste("magic",100,"beans"),bothdata-1)

次に、次の方法で cbind を試みgetます。

data<-cbind(data,get(paste("magic",100,"beans")))

列は「get(paste("magic",100,"beans"))」と呼ばれます。ブー!誰か考えはありますか?私はcbindそれを個別colnames(data)[ncol(data)] <- paste("magic",100,"beans"))に行うことができると思いますが、今のところ解決すると思いますが、それでも直接的な方法があるかどうかを知りたいと思います。

ありがとう。

4

2 に答える 2

2

cbindあなたのユースケースにとってはやり過ぎかもしれません。ほとんどの場合、data$newname2 <- data$bothdata - 1.

列の名前が動的な場合は、[[演算子 --を使用して参照できますdata[["newcol"]] <- data$newname + 1。その他のヒントと使用法については?'['、 とを参照してください。?'[.data.frame'

[["newcol"]]編集:代わりに@Marekの提案を取り入れました[, "newcol"]

于 2015-09-01T19:37:17.807 に答える
2

それが「col1」の場合とdata$col1同じでdata[,"col1"]あることを知っておくと役立つ場合があります。これは、通常、プログラムで列にアクセス/設定する方法です。data[,x]x

したがって、これは機能するはずです:

name <- paste("magic",100,"beans")
data[,name] <- obsdata-1

一時変数を使用する必要がないことに注意してくださいname。これは次と同等です。

data$magic100beans <- obsdata-1

それ自体は、data.frame に対して次のように同等です。

data<-cbind(data, magic100beans=bothdata-1)

後で名前を設定することもできます。

old_names <- names(data)
name <- paste("magic",100,"beans")

data <- cbind(data, bothdata-1)

data <- setNames(data, c(old_names, name))
# or
names(data) <- c(old_names, name)
于 2015-09-01T19:37:57.067 に答える