"منخفض خارج الحدود" عند تشغيل تطبيق() في TERR ، ولكن يعمل في سهل R
سؤال
عندما أحاول تشغيل الجزء التالي من التعليمات البرمجية في Spotfire المهنية باعتبارها "R النصي - تيبكو المؤسسة 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)))
أحصل على رسالة الخطأ التالية:
تيبكو المؤسسة Runtime for R إرجاع خطأ:'خطأ في التوسع.أسماء(x) :منخفض خارج حدود'.في Spotfire.Dxp.البيانات.DataFunctions.والمنفذين.LocalFunctionClient.OnExecuting(FunctionClient funcClient)
(بقية تتبع المكدس محذوفة)
ولكن نفس القانون يعمل لا تشوبه شائبة في سهل R.لو كنت محل mydata_broken
مع mydata_ok
في الدعوة إلى apply()
, كل شيء يعمل كما هو متوقع (سواء في الحزن و عادي R).
الأشياء التي كنت قد حاولت حتى الآن:
- استخدام
yy
بدلا منy
في وظيفة مجهول المقدمةapply()
(لاستبعاد بعض الغباء تسمية القضايا المتعلقةy
) - وضع كل شيء في
local({...})
كتلة والتحقق من ذلك في البحث والتطوير ، كما اقترح في لماذا "منخفض خارج الحدود" خطأ في لامعة ولكن ليس "ص" ؟
نسخة & معلومات التكوين
- Spotfire 5.5.0, بناء النسخة 5.5.0.31 ، وبناء التاريخ:22.05.2013
- R الإصدار 3.0.2, 64bit (2013-09-25)
- ويندوز 7 64bit
لذا سؤالي هو:هل انا غبية الخطأ هنا ؟ أو هو هذا الخلل في Spotfire R وقت التشغيل?
التحديث أود فتح هذا السؤال لأن لدي مقومات الحل من Spotfire الدعم و أود أن أضيف أنها إجابة.
المحلول
وهنا باختصار ملخص الرد علي من Spotfire الدعم:
- هو في الواقع خطأ في TERR (على ما يبدو ، TERR ليست قادرة على قراءة
list()
هيكل بشكل صحيح ، مما تسبب خطأ في أبعاد المصفوفة كان من المفترض أن خلق);وهم يعملون حاليا على تحديد ذلك - كحل ، يمكنك استخدام
c()
بدلا منlist()
في تعريف البيانات
تعديل تعريف البيانات التي تعمل في 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")
)
)
)