内で「オブジェクトが見つかりません」というエラーを理解していません:私はラッピング機能せず、それを呼び出すは、私は大体この機能を持っている機能
Error in eval(expr, envir, enclos) : object 'id' not found
:
splom(data.pca, groups=log$id)
それがこのエラー発生します
Error in log$id : object of type 'special' is not subsettable
を私はこれを行うとき:
id <- log$id
splom(models, groups=id)
を期待どおりに動作します。
なぜこのように動作するのか、どのように修正するのですか?ありがとう。ところで
:
- Help understand the error in a function I defined in R
- Object not found error with ddply inside a function
- Object disappears from namespace in function
それらのどれも私を助けていない: 私はここに同様の質問、例えばの意識です。
編集:要求されたよう 、完全な "plot_pca_models" 機能があります:
plot_pca_models <- function(data, id, sel=c(1:4), comp=1) {
# 'data' ... princomp objects
# 'id' ... list of samples id (classes)
# 'sel' ... list of models to compare
# 'comp' ... which pca component to compare
library(lattice)
models <- c()
models.size <- 1:length(data)
for(model in models.size) {
models <- c(models, list(data[[model]]$scores[,comp]))
}
names(models) <- 1:length(data)
models <- do.call(cbind, models[sel])
splom(models, groups=id)
}
EDIT2: 私は、問題が再現させることができました。
require(lattice)
my.data <- data.frame(pca1 = rnorm(100), pca2 = rnorm(100), pca3 = rnorm(100))
my.id <- data.frame(id = sample(letters[1:4], 100, replace = TRUE))
plot_pca_models2 <- function(x, ajdi) {
splom(x, group = ajdi)
}
plot_pca_models2(x = my.data, ajdi = my.id$id)
これは、上記と同じエラーが発生します。
'log'は基底Rの関数です。関数の後にオブジェクトの名前を付けるのは良いことではありません。 – Thomas
オブジェクト 'log'を呼び出さないでください。 'log'は' base'パッケージの関数です。名前が変わっても問題が解決しない場合は、教えてください。 – shadow
これは、格子が非標準評価を使用するためです。あなたは実際にあなたが望んでいるとは言いませんが、 'print(splom(models、groups = id))'を試してください。 – hadley