У меня есть функции для выполнения моего моделирования, написанные на Python, но я хотел бы использовать результирующие pandas dataFrames в R. Когда я пытаюсь это сделать, я получаю "TypeError: 'float' object cannot be interpreted as an integer"
Фактический код, который я хотел бы запустить, выглядит следующим образом:
def makeData(N, intercept, coef1, coef2, coef3, dev):
x1 = np.random.uniform(low=1, high=3, size=N)
x2 = np.random.uniform(low=100, high=110, size=N)
x3 = np.random.uniform(low=8000, high=10000, size=N)
dep = x1 * coef1 + x2 * coef2 + x3 * coef3 + np.random.normal(loc=intercept, scale=dev, size=N)
ind = pd.DataFrame({'x1': x1, 'x2': x2, 'x3': x3})
target = pd.DataFrame({'y': dep})
joint_data = pd.concat([ind, target], axis=1)
return joint_data
Что касается R, я использую reticulate
для взаимодействия. Я вызываю скрипт Python с source_python()
, а затем пытаюсь распечатать результат импортированных функций.
Я пробовал меньшие функции, чтобы точно определить проблему, вот результаты.
Эти два работают без проблем, и я вывожу данные в конец R.
def test():
x1 = np.array([1, 2, 3])
x2 = np.array([2, 4, 6])
x3 = np.array((3, 6, 9))
ind = pd.DataFrame({'x1': x1, 'x2': x2, 'x3': x3})
return (ind)
def test():
x1 = np.array([1.5, 2.5, 3.5])
x2 = np.array([2, 4, 6])
x3 = np.array((3, 6, 9))
ind = pd.DataFrame({'x1': x1, 'x2': x2, 'x3': x3})
return (ind)
Затем я попытался с помощью numpy
создать несколько столбцов:
def test(N):
x1 = np.random.randint(low=1, high=3, size = N)
x2 = np.array([2, 4, 6])
x3 = np.array((3, 6, 9))
ind = pd.DataFrame({'x1': x1, 'x2': x2, 'x3': x3})
return (ind)
def test(N):
x1 = np.random.uniform(low=1, high=3, size=N)
x2 = np.array([2, 4, 6])
x3 = np.array((3, 6, 9))
ind = pd.DataFrame({'x1': x1, 'x2': x2, 'x3': x3})
return (ind)
Это не работает. В Python dataFrame генерируется правильно. Как только я пытаюсь получить его в R, я получаю ошибку, перечисленную выше, независимо от того, какую функцию я использую (и являются ли значения в кадре данных целыми числами или числами с плавающей запятой).
Я пытался погуглить ошибку, и она кажется распространенной, но я не могу перевести решения на то, что я пытаюсь сделать.