"Subíndice fuera de límites" cuando se ejecuta apply() en TERR, pero funciona en R simple

StackOverflow https://stackoverflow.com//questions/24038497

  •  21-12-2019
  •  | 
  •  

Pregunta

Cuando intento ejecutar el siguiente fragmento de código en Spotfire Professional como "R Script - Tibco Enterprise Runtime for R":

mydata_broken <- structure(
  list(
    Var1 = list(3.99083333270391, 3.99083333270391, 3.99083333270391, 3.99083333270391), 
    Var2 = list(3.99083333270391, 3.99083333270391, 3.99083333270391, 3.99083333270391)), 
  row.names = c("1", "2", "3", "4"), 
  class = "data.frame", 
  out.attrs = list(dim = c(2L, 2L), 
                   dimnames = list(
                     Var1 = c("Var1=3.99083333270391", "Var1=3.99083333270391"), 
                     Var2 = c("Var2=3.99083333270391", "Var2=3.99083333270391")
                     )
                   )
  )

mydata_ok <- structure(
  list(
    Var1 = list(3.99083333270391), 
    Var2 = list(3.99083333270391)), 
  row.names = "1", 
  class = "data.frame", 
  out.attrs = list(dim = c(1L, 1L), 
                   dimnames = list(
                     Var1 = "Var1=3.99083333270391", 
                     Var2 = "Var2=3.99083333270391")
                   )
  )

out <- apply(mydata_broken, 1, function(y) mean(as.numeric(y)))

Recibo el siguiente mensaje de error:

TIBCO Enterprise Runtime para R devolvió un error:'Error en expandir.nombres(x):subíndice fuera de límites'.en Spotfire.Dxp.Data.DataFunctions.Executors.LocalFunctionClient.OnExecuting(FunctionClient funcClient)

(se omite el resto del seguimiento de la pila)

Sin embargo, el mismo código funciona perfectamente en R simple.si reemplazo mydata_broken con mydata_ok en la llamada a apply(), todo funciona como se esperaba (tanto en TERR como en R simple).

Cosas que he probado hasta ahora:

Información de versión y configuración

  • Spotfire 5.5.0, versión de compilación 5.5.0.31, fecha de compilación:22.05.2013
  • R versión 3.0.2, 64 bits (25/09/2013)
  • Windows 7, 64 bits

Entonces, mi pregunta es:¿Estoy cometiendo algún error estúpido aquí?¿O se trata de un error en el tiempo de ejecución de Spotfire R?

ACTUALIZARMe gustaría reabrir la pregunta porque obtuve una solución viable del soporte de Spotfire y me gustaría agregarla como respuesta.

¿Fue útil?

Solución

Aquí hay un breve resumen de la respuesta que recibí del soporte de Spotfire:

  • De hecho, es un error en TERR (aparentemente, TERR no puede leer el list() estructura adecuadamente, provocando una falla en las dimensiones de la matriz que debía crear);Actualmente están trabajando para solucionarlo.
  • como solución alternativa, puede utilizar c() en lugar de list() en la definición de datos

Definición modificada de datos que funcionan en TERR.

mydata_working <- structure(
    list(
      Var1 = c(3.99083333270391, 3.99083333270391, 3.99083333270391, 3.99083333270391), 
      Var2 = c(3.99083333270391, 3.99083333270391, 3.99083333270391, 3.99083333270391)), 
    row.names = c("1", "2", "3", "4"), 
    class = "data.frame", 
    out.attrs = list(dim = c(2L, 2L), 
                     dimnames = list(
                       Var1 = c("Var1=3.99083333270391", "Var1=3.99083333270391"), 
                       Var2 = c("Var2=3.99083333270391", "Var2=3.99083333270391")
                       )
                     )
    )
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top