Как я могу создать фрейм данных, используя функцию из векторов? - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь создать фрейм данных, используя функцию. Эта функция основана на трех различных векторах (Tol, Bzn, mXyl), относящихся к 101 длине волны поглощения. Я хочу умножить на различные концентрации и в результате сохранить его в информационном кадре.

Я создал простой код (я знаю, что мог бы сделать это с другими более вежливыми функциями, но я немного приверженец R), который создает 27 строк различных комбинаций между концентрациями для каждого вектора. Таким образом, эти 27 строк должны быть строками кадра данных, и каждый столбец должен быть каждой длиной волны, хранящейся в векторах. (Длина волны - это переменные)

в качестве примера структуры вектора Tol (Bzn и mXyl аналогичны):

str(Tol)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   1 obs. of  101 variables:

$ nm200: num 8.13

$ nm201: num 8.3

$ nm202: num 8.47

$ nm203: num 8.69

$ nm204: num 8.91

(...) Есть от 200 до 300 длин волн. Вы можете визуализировать это!

$ nm294: num 0

$ nm295: num 0

$ nm296: num 0

$ nm297: num 0

$ nm298: num 0

И моя маленькая (и первая) функция, созданная с использованием R:

Con1 = 1

Con2 = 2

Con3 = 3

mat_cont <- function(Tol, Bzn, mXyl,Con1,Con2, Con3){

n1  <-  0    * (Tol*Con1) +  0   * (Bzn*Con2)  +  0   * (mXyl*Con3)

n2  <-  0    * (Tol*Con1) +  0   * (Bzn*Con2)  +  0.5 * (mXyl*Con3)

n3  <-  0    * (Tol*Con1) +  0   * (Bzn*Con2)  +  1   * (mXyl*Con3)

n4  <-  0    * (Tol*Con1) +  0.5 * (Bzn*Con2)  +  0   * (mXyl*Con3)

n5  <-  0    * (Tol*Con1) +  1   * (Bzn*Con2)  +  0   * (mXyl*Con3)

n6  <-  0    * (Tol*Con1) +  0.5 * (Bzn*Con2)  +  0.5 * (mXyl*Con3)

n7  <-  0    * (Tol*Con1) +  0.5 * (Bzn*Con2)  +  1   * (mXyl*Con3)

n8  <-  0    * (Tol*Con1) +  1   * (Bzn*Con2)  +  0.5 * (mXyl*Con3)

n9  <-  0    * (Tol*Con1) +  1   * (Bzn*Con2)  +  1   * (mXyl*Con3)

n10 <-  0.5  * (Tol*Con1) +  0   * (Bzn*Con2)  +  0   * (mXyl*Con3)

(...)

n25 <-  1    * (Tol*Con1) +  0.5 * (Bzn*Con2)  +  1   * (mXyl*Con3)

n26 <-  1    * (Tol*Con1) +  1   * (Bzn*Con2)  +  0.5 * (mXyl*Con3)

n27 <-  1    * (Tol*Con1) +  1   * (Bzn*Con2)  +  1   * (mXyl*Con3)

result <- (data.frame(??????)


return(result)

}

Я бы хотел иметь такой фрейм данных с именем столбцов как nm200, nm201, nm202, nm203 ...:

n1   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

n2   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

n3   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

n4   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

n5   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

(...)

n26   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

n27   val1   val2   val3   val4   val5   val6   val7   val8   val9 (...)

Большое спасибо за вашу безграничную помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...