Не удается устранить ошибку "не может содержать определения 'CreateInstance' и 'SetDllDirectory' "

Я новый разработчик C#. Мне нужно запустить мои R скрипты в программе C#. Я нахожу документацию здесь http://quantlabs.net/academy/very-nice-my-c-program-calls-r-code-through-the-r-net-package-dancing-in-the-streets/ и я попытался адаптировать его к моему проекту. Это обычно показывает эту ошибку:

REngine 'не содержит определения для' SetDllDirectory '

REngine 'не содержит определения для'CreateInstance'

Я ищу здесь, нахожу предложения здесь. REngine "не содержит определения" SetDllDirectory "," RDotNet ", и я изменяю его, но никак не могу. Для вашей информации я работаю с последней версией Visual Studio(2017) и загружаю последний пакет R.net (1.7.0). Пожалуйста, мне нужен совет и помощь от тех, кто работал над вопросами, которые включают взаимодействие между R и C#. На самом деле, все мои скрипты r просто готовы запустить их в программе на C#.

Мой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using RDotNet;
using Microsoft.Win32;

namespace Con_R
{
    class Program
    {
        static void Main(string[] args)
        {
            string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
            if (string.IsNullOrEmpty(rhome))
                rhome = @"C:\Program Files\R\R-3.3.1";

            System.Environment.SetEnvironmentVariable("R_HOME", rhome);
            System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"binx64");



            // Set the folder in which R.dll locates.
            //REngine.SetDllDirectory(@"C:Program FilesRR-2.12.0bini386″);
            REngine.SetDllDirectory(@"C:\Program Files\R\R-3.3.1\bin\x64");

            // REngine e = REngine.CreateInstance("test", new[] { "" });
            using (REngine engine = REngine.CreateInstance("RDotNet",  "-q" ))  // quiet mode
            {


                foreach (string path in engine.Evaluate(".libPaths()").AsCharacter())
                {
                    Console.WriteLine(path);
                }
                engine.Evaluate(".libPaths(C:\\Program Files\\R\\R-3.3.1\\library)");
                engine.Evaluate("source(D:\\R\\Script\\load_forecast_grid.r)");

                Console.ReadLine();
            }
        }
    }
}

0 ответов

Другие вопросы по тегам