Пример #1
0
        /// <summary>
        /// Converts the specified expression to a CharacterVector.
        /// </summary>
        /// <param name="expression">The expression.</param>
        /// <returns>The LogicalVector. Returns <c>null</c> if the specified expression is not vector.</returns>
        public static CharacterVector AsCharacter(this SymbolicExpression expression)
        {
            if (!expression.IsVector())
            {
                return(null);
            }
            IntPtr coerced = IntPtr.Zero;

            if (expression.IsFactor())
            {
                coerced = expression.GetFunction <Rf_asCharacterFactor>()(expression.DangerousGetHandle());
            }
            else
            {
                coerced = expression.GetFunction <Rf_coerceVector>()(expression.DangerousGetHandle(), SymbolicExpressionType.CharacterVector);
            }
            return(new CharacterVector(expression.Engine, coerced));
        }