2017-01-20 5 views
0

`に次のことを指してnames`は、一つのRセッション内で起こった:by.data.frame(mtcars)では `by`代わり

c("cyl", "mpg") %in% names(mtcars) 

エラー:

引数 "インデックスが" 不足しています、既定値なし

実際には、namesを呼び出すとbyと表示されました。 base::namesを呼び出す

names 
#function (data, INDICES, FUN, ..., simplify = TRUE) 
#UseMethod("by") 
#<bytecode: 0x475e718> 
#<environment: namespace:base> 

は大丈夫だった:function (x) .Primitive("names")

私はRStudioのメニューオプションをクリックすることにより、Rセッションを再起動するが、それは助けにはなりませんでした。 RStudioを閉じると(namesは正しくfunction (x) .Primitive("names")と表示されます)、これを再現できなくなりました。

これがどうして起こりますか?

その瞬間に私のセッションは(フレイアは、Ubuntuの14.04のフォークです)

:これが起こる、とRStudioでのセッションの再起動全体場合であり続けるでしょう

sessionInfo() 
# R version 3.3.2 (2016-10-31) 
# Platform: x86_64-pc-linux-gnu (64-bit) 
# Running under: elementary OS Freya 
# 
# locale: 
# [1] LC_CTYPE=en_US.UTF-8  LC_NUMERIC=C    
# [3] LC_TIME=cs_CZ.UTF-8  LC_COLLATE=en_US.UTF-8  
# [5] LC_MONETARY=cs_CZ.UTF-8 LC_MESSAGES=en_US.UTF-8 
# [7] LC_PAPER=cs_CZ.UTF-8  LC_NAME=C     
# [9] LC_ADDRESS=C    LC_TELEPHONE=C    
# [11] LC_MEASUREMENT=cs_CZ.UTF-8 LC_IDENTIFICATION=C  
# 
# attached base packages: 
# [1] stats  graphics grDevices utils  datasets methods base  
# 
# other attached packages: 
# [1] moodler_0.1 tidyr_0.6.0 dplyr_0.5.0 
# 
# loaded via a namespace (and not attached): 
# [1] lazyeval_0.2.0 magrittr_1.5 R6_2.2.0  assertthat_0.1 DBI_0.5-1  
# [6] tools_3.3.2 tibble_1.2  Rcpp_0.12.8 stringi_1.1.2 RMySQL_0.10.9 
# [11] openxlsx_3.0.0 

答えて

0

最も明白な方法は、ありますコード内のある時点で割り当てがnames <- byに変更されました。

しかし、再現できないため、答えが簡単かどうか、または割り当てがより複雑な操作の結果であるかどうかを知ることは不可能です。

+0

興味深いことに、これもRStudioのファイルブラウザを乱してしまいました。p – mpjdem

+0

あなたはおそらく正しいです...そして、RStudioはセッションを再起動するときにグローバル環境を保持するので、再割り当てされた 'names'をそのまま残します。私のコードに明示的に '名前 'を' by'に代入するという明確な点はありませんが、私は引数の名前を "by"にしましたので、入力を解析する際に暗い魔法が起きた可能性があります。 – jakub

+0

Rstudioはヒストリー・クロス・セッションをかなりうまく保っていますので、 '名前< - by'または' names = by'を呼ぶ状況を見つけることができるでしょう。 –