"Subscrito fora dos limites" ao executar aplica() em TERRAE, mas funciona na planície R

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

  •  21-12-2019
  •  | 
  •  

Pergunta

Quando eu tento executar o seguinte pedaço de código em Spotfire Profissional como um "R Script - Tibco de tempo de execução para 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)))

Recebo a seguinte mensagem de erro:

TIBCO de tempo de execução para R retornou um erro:'Erro na expandir.nomes(x) :inferior à linha fora do limite.em Spotfire.Dxp.Dados.DataFunctions.Executores.LocalFunctionClient.OnExecuting(FunctionClient funcClient)

(o resto do rastreamento de pilha de omitido)

No entanto, o mesmo código funciona perfeitamente na planície R.Se eu substituir mydata_broken com mydata_ok na chamada para apply(), tudo funciona conforme o esperado (tanto na TERR e simples R).

Coisas que eu tentei até agora:

De versão e as informações de configuração

  • Spotfire 5.5.0, versão de compilação 5.5.0.31, data de compilação:22.05.2013
  • R versão 3.0.2, 64bit (2013-09-25)
  • Windows 7 64bit

Então, minha pergunta é:Estou fazendo algumas erro estúpido aqui?Ou este é um bug em que o Spotfire R tempo de execução?

ATUALIZAÇÃO Gostaria de reabrir a questão, porque eu tenho uma solução viável do Spotfire de apoio, e eu gostaria de adicioná-lo como uma resposta.

Foi útil?

Solução

Aqui está um breve resumo da resposta que eu recebi do Spotfire apoio:

  • é de fato um erro no TERR (aparentemente, TERR não é capaz de ler o list() estrutura adequadamente, causando uma falha nas dimensões da matriz, que era suposto para criar);eles estão atualmente trabalhando para corrigi-lo
  • como solução alternativa, você pode usar c() em vez de list() na definição de dados

Modificado de definição de dados, que funciona em 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top