web-dev-qa-db-ja.com

複数の警告「不明な列」を修正

すべてのタイプのコマンド(パッケージへの更新のインストールに対するstr(x)など)について、「不明な列」という複数の警告が持続的に表示されますが、これをデバッグまたは修正する方法がわからない場合があります。

"unknown column"という警告は、私が名前を変更したtbl_dfの変数に明らかに関連していますが、警告はtbl_dfとは無関係のように思われるあらゆる種類のコマンドで発生します。単に文字ベクトルです。

127
ssp3nc3r

更新:この問題はRStudio v1.1.103以降ではこの コミット で部分的に修正されました @ kevin-ushey 。それはまだ表示されます(頻度は低いですが)。

これは、RStudioの診断ツール(コードに警告と誤りがある可能性を示すツール)の問題です。

https://support.rstudio.com/hc/en-us/community/posts/115001180488-Diagnostics-and-tibble-warning

回避策として、開いているファイルの先頭に追加することができます。

# !diagnostics off

その後、ファイルを保存すると警告が表示されなくなります。

Preferences/Code/Diagnosticsで診断を無効にすることもできます。

RStudioの診断ツールがソースコードを解析してエラーを検出し、診断チェックを実行すると初期化されていないチブル内の列にアクセスして警告が表示されるため、警告が表示されると思います。関連性のないものを実行したために警告が表示されず、RStudio診断が実行されたとき(ファイルが保存された後に何かを実行したときに変更されたとき)に表示されます。

42
zeehio

私は同じ問題に遭遇しています、そしてなぜそれが起こるのかわかりませんが、私は突き止めることができましたいつそれが発生したため、発生しないようにします。

問題は、索引付けから派生した新しい列を基本Rデータ・フレームとチブル・データ・フレームに追加することにあるようです。この例では、ベースRデータフレームに新しい列(age)を追加します。

base_df <- data.frame(id = c(1:3), name = c("mary", "jill","steve"))

base_df$age[base_df$name == "mary"] <- 47

警告を返さずに動作します。しかし、同じことがチブルで行われると、それは警告を投げます(そして結果的に、私は奇妙な、一見したところ疑わしくない、複数の警告問題を引き起こしていると思います)

library(tibble)

tibble_df <- tibble(id = c(1:3), name = c("mary", "jill","steve"))

tibble_df$age[tibble_df$name == "mary"] <- 47

Warning message:
Unknown column 'age' 

これを回避するための確かに良い方法がありますが、最初にNAsのベクトルを作成することが仕事をすることを私は発見しました:

tibble_df$age <- NA

tibble_df$age[tibble_df$name == "mary"] <- 47
37
sabre

"dplyr"パッケージを使用しているとき、私はこの問題に直面しました。
"dplyr"ライブラリの "group_by"関数を使用した後にこの問題に直面する人のために:

変数をグループ解除すると、未知の列に関する警告の問題が解決することがわかりました。問題が解決するまで、グループ解除を何度か繰り返さなければならないことがありました。

16
Varun

クラスをdata.frameに変換することで問題は解決しました。

library(dplyr)
df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))
dfTbl <- df %>%
  group_by(id) %>%
  summarize (n = n())
class(dfTbl) # [1] "tbl_df"     "tbl"        "data.frame"
dfTbl = as.data.frame(dfTbl)
class(dfTbl) # [1] "data.frame"

@adtsから部分スクリプトを借用しました

4
stok

Dyplyrブロックを使用して作成されたチブルを通して以外は私もこの問題に遭遇しました。これは私が同じエラーになった方法を示すためにsabreのコードを少し修正したものです。

library(dplyr)

df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))

t <- df %>%
  group_by(id) %>%
  summarize (n = n())

t
str(t)


t$newvar[t$id==1] <- 0
1
adts

Tibbleとlapplyの機能を一緒に扱うときにこの問題がありました。チブルはデータフレーム内のリストとして物事を保存するように見えました。

ラップ機能の結果をティブルに追加する前に、unlistを使用して解決しました。

0
michael joseph

次の列を選択したいとしましょう。

best.columns = 'id'

私にとっては、次のような警告が表示されました。

df%>% select_(one_of(best.columns))

これは予想どおりに機能しましたが、dplyrを知る限り、これは同一であるべきです。

df%>% select_(.dots = best.columns)
0
JelenaČuklina