[解決済み】reshape2でminやmaxを使うと、引数が足りないという警告が出る。
2022-02-23 10:33:59
質問
reshape2パッケージのdcast関数でminやmaxを使うと、以下のような警告が出ます。これは何を意味しているのでしょうか?この警告メッセージについて説明しているものは見当たりませんし、なぜmaxを使うと警告が出るのに、meanや他の集計関数を使うと出ないのか、少し混乱しています。
<ブロッククオート
警告メッセージが表示されます。
.fun(.value[0], ...) において : min に欠落していない引数がない; Inf を返している。
再現性のある例です。
data(iris)
library(reshape2)
molten.iris <- melt(iris,id.var="Species")
summary(molten.iris)
str(molten.iris)
#------------------------------------------------------------
# Both return warning:
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=min)
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=max)
# Length looks fine though
dcast(data=molten.iris,Species~variable,value.var="value",fun.aggregate=length)
#------------------------------------------------------------
# No warning messages here:
aggregate(value ~ Species + variable, FUN=min, data=molten.iris)
aggregate(value ~ Species + variable, FUN=max, data=molten.iris)
#------------------------------------------------------------
# Or here:
library(plyr)
ddply(molten.iris,c("Species","variable"),function(df){
data.frame(
"min"=min(df$value),
"max"=max(df$value)
)
})
#------------------------------------------------------------
解決方法は?
長さ0の数値引数に対してmin/maxを適用しているため、この警告が表示されます。
これにより、警告が再現されます。
min(numeric(0))
[1] Inf
Warning message:
In min(numeric(0)) : no non-missing arguments to min; returning Inf
ただし
mean
という警告は出ません。
mean(numeric(0))
[1] NaN
これは単なる警告であり、計算には何の影響も及ぼしません。この警告を表示しないようにするには
suppressWarnings
:
suppressWarnings(dcast(data=molten.iris,
Species~variable,value.var="value",
fun.aggregate=min))
EDIT
上記は質問に答えただけです。この警告の意味は何なのか、なぜmin/maxではなくmean関数なのか、などです。 なぜ
dcast
が長さ0のベクトルに集約関数を適用しているのはバグなので、パッケージメンテナに連絡してください。私は、このエラーは
plyr::vaggregate
が内部で使用している関数
dcast
,
plyr::vaggregate(1:3,1:3,min)
Error in .fun(.value[0], ...) :
(converted from warning) no non-missing arguments to min; returning Inf
特にこの行のコード。
plyr::vaggregate
function (.value, .group, .fun, ..., .default = NULL, .n = nlevels(.group))
{
### some lines
....
### Here I don't understand the meaning of .value[0]
### since vector in R starts from 1 not zeros!!!
if (is.null(.default)) {
.default <- .fun(.value[0], ...)
}
## the rest of the function
.....
}
関連
-
[解決済み】knitrのドキュメントでinstall.packagesが失敗する。"ミラーを設定せずにCRANを使おうとしている"
-
[解決済み】プロット時に 'x' と 'y' の長さが異なる ERROR が発生する。
-
[解決済み】reshape2 meltの警告メッセージ
-
[解決済み】RでKNN。trainとclassは長さが違う」?
-
[解決済み】「'dimnames' [1]の長さが配列の範囲と等しくない」とはどういう意味ですか?
-
[解決済み】rbind(deparse.level, ...)でエラー:引数の列の数がRにマッチしていない
-
[解決済み】Rでデータフレームのサブセットをプロットする方法は?
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】行列式で「数値/複雑な行列/ベクトルの引数を必要とする」というエラーが発生する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】R:関数に有限な'ylim'値が必要
-
[解決済み】knitrのドキュメントでinstall.packagesが失敗する。"ミラーを設定せずにCRANを使おうとしている"
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み] テスト
-
[解決済み】「'dimnames' [1]の長さが配列の範囲と等しくない」とはどういう意味ですか?
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み】forループを実行すると「要因のレベルセットが異なる」というエラーが発生する
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"