次のコードを Spotfire Professional で "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)))
次のエラー メッセージが表示されます。
TIBCO Enterprise Runtime for R がエラーを返しました: 'expand.names(x) のエラー: 添え字が範囲外'. Spotfire.Dxp.Data.DataFunctions.Executors.LocalFunctionClient.OnExecuting (FunctionClient funcClient) で
(残りのスタックトレースは省略)
ただし、同じコードはプレーン R で問題なく動作します。への呼び出しでを置き換えるmydata_broken
と、すべてが期待どおりに動作します (TERR とプレーン R の両方)。mydata_ok
apply()
私がこれまでに試したこと:
- に提供される無名関数の
yy
代わりに使用します( に関するいくつかの愚かな命名の問題を排除するため)y
apply()
y
- すべてを
local({...})
ブロックに入れ、R でチェックします。これは、Shiny では「添え字が範囲外」であるが、R ではエラーが発生しない理由で示唆されているように?
バージョンと構成情報
- Spotfire 5.5.0、ビルド バージョン 5.5.0.31、ビルド日: 22.05.2013
- R バージョン 3.0.2、64 ビット (2013-09-25)
- ウィンドウズ7、64ビット
だから、私の質問は次のとおりです。私はここで愚かな間違いを犯していますか? それとも、これは Spotfire R ランタイムのバグですか?
更新 Spotfire サポートから実行可能な回避策を得たので、質問を再開したいと思います。回答として追加したいと思います。