5

Kaggle Digit Recognizerの問題に取り組んでいます。指定されたコードを試したときにエラーが発生しました。

eval(expr、envir、enclos)のエラー:関数「eval」が見つかりませんでした

library(ggplot2)
library(proto)
library(readr)
train <- data.frame(read_csv("../input/train.csv"))

labels   <- train[,1]
features <- train[,-1]

rowsToPlot <- sample(1:nrow(train), 49)

rowToMatrix <- function(row) {
   intensity <- as.numeric(row)/max(as.numeric(row))
   return(t(matrix((rgb(intensity, intensity, intensity)), 28, 28)))
}

geom_digit <- function (digits, labels) GeomRasterDigit$new(geom_params = 
list(digits=digits),stat = "identity", position = "identity", data = NULL, 
inherit.aes = TRUE)

次のセグメントを実行すると、エラーが発生します。

GeomRasterDigit <- proto(ggplot2:::GeomRaster, expr={
draw_groups <- function(., data, scales, coordinates, digits, ...) {
bounds <- coord_transform(coordinates, data.frame(x = c(-Inf, Inf), y = c(
- Inf, Inf)), scales)
x_rng <- range(bounds$x, na.rm = TRUE)
y_rng <- range(bounds$y, na.rm = TRUE)
rasterGrob(as.raster(rowToMatrix(digits[data$rows,])), x_rng[1], y_rng[1], 
diff(x_rng), diff(y_rng),default.units = "native", just =c("left","bottom"),
interpolate = FALSE)
}
})

完全なコードへのリンク: https://www.kaggle.com/benhamner/digit-recognizer/example-handwritten-digits/code

4

1 に答える 1

4

githubで最新の ggplot2コードを見てください。他の変更の中でggproto置き換えられるようになりました。proto

以下のコードは正常に動作するはずです。

 GeomRasterDigit <- ggproto(ggplot2:::GeomRaster, expr={
 draw_groups <- function(., data, scales, coordinates, digits, ...) {
 bounds <- coord_transform(coordinates, data.frame(x = c(-Inf, Inf), y = c(
 - Inf, Inf)), scales)
 x_rng <- range(bounds$x, na.rm = TRUE) 
 y_rng <- range(bounds$y, na.rm = TRUE)
 rasterGrob(as.raster(rowToMatrix(digits[data$rows,])), x_rng[1], y_rng[1], 
 diff(x_rng), diff(y_rng),default.units = "native", just =c("left","bottom"),
 interpolate = FALSE)
 }
 })

それについてのビネットがありggprotoます。

于 2016-02-21T00:52:09.903 に答える