2017-12-22 11 views
1

私はRを使ってデータをスクラブしています。私は1,000個の列を持つデータセットを持っています。 $オペレータが私のコードを読むことができないことがわかりました。 withコマンドを使ってデータステップを実行して、データフレームのすべての要素がローカルスコープになるようにします(ここでは、私のコンピュータサイエンスを完全に知らないことは許してください)。しかし、すべてのことが行われた後、私はwithのステップで書いたすべての変数を返したいと思います。 ls()コマンドでは、withのステップ内で定義された変数だけが表示されますが、どのようにデータフレームに連結できますか?このような「with」から「環境を返す」方法

set.seed(123) 
myDat <- data.frame('x'=rnorm(3)) 
y <- with(myDat, { 
    xgt0 <- x > 0 
    x2 <- x^2 
    foo() 
}) 

print(y) 
      x1 xgt0   x2 
1 -0.5604756 FALSE 0.31413295 
2 -0.2301775 FALSE 0.05298168 
3 1.5587083 TRUE 2.42957161 

答えて

6

使用within

set.seed(123) 
myDat <- data.frame('x'=rnorm(3)) 

within(myDat, { 
    xgt0 <- x > 0 
    x2 <- x^2 
}) 

を与える:

  x   x2 xgt0 
1 -0.5604756 0.31413295 FALSE 
2 -0.2301775 0.05298168 FALSE 
3 1.5587083 2.42957161 TRUE 
1
transform(myDat,xgt0=x > 0,x2= x^2) 
      x xgt0   x2 
1 -0.5604756 FALSE 0.31413295 
2 -0.2301775 FALSE 0.05298168 
3 1.5587083 TRUE 2.42957161 
所望の出力の例として

関連する問題