첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ Program.cs

using System;
using System.Linq;

using RDotNet;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            REngine.SetEnvironmentVariables();

            REngine rEngine = REngine.GetInstance();

            // REngine이 명시적인 초기화를 요구한다.
            rEngine.Initialize();

            // 닷넷 프레임워크 배열을 R 벡터로 변환한다.
            NumericVector numericVector1 = rEngine.CreateNumericVector(new double[] { 30.02, 29.99, 30.11, 29.97, 30.01, 29.99 });

            rEngine.SetSymbol("group1", numericVector1);

            // R 스크립트에서 직접 파싱한다.
            NumericVector numericVector2 = rEngine.Evaluate("group2 <- c(29.89, 29.93, 29.72, 29.98, 30.02, 29.98)").AsNumeric();

            // 평균의 차이를 테스트하고 P-Value를 구한다.
            GenericVector genericVector = rEngine.Evaluate("t.test(group1, group2)").AsList();

            double pValue = genericVector["p.value"].AsNumeric().First();

            Console.WriteLine("Group1 : [{0}]", string.Join(", ", numericVector1));
            Console.WriteLine("Group2 : [{0}]", string.Join(", ", numericVector2));
            Console.WriteLine();
            Console.WriteLine("P-value = {0:0.000}", pValue);

            // 항상 REngine을 적절하게 해제해야 한다.
            // 엔진 해제 후, 다시 초기화하거나 재사용할 수 없다.
            rEngine.Dispose();
        }

        #endregion
    }
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker
TAG , , ,

댓글을 달아 주세요