/// <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)); }