Разделите каждые три числа вектора на значения в другом векторе - PullRequest
2 голосов
/ 05 февраля 2020

Я хотел бы выполнить простой расчет.

У меня есть вектор чисел:

> dput(DF_IS[,2])
c(0.00605997931747673, 0.00161894273127753, 0.00182572614107884, 
0.00133636363636364, 0.00379888268156425, 0.00172248803827751, 
0.000883211678832117, 0.0017481662591687, 0.00163145539906103, 
0.000837486457204767, 0.000321167883211679, 0.000825, 0.00144298688193744, 
0.000708860759493671, 0.000871599564744287, 0.000319108280254777, 
0.000518123667377399, 0.000363636363636364, 42.3517169614984, 
28.5714285714286, 50.4672897196262, 30.78125, 42.8571428571429, 
47.8781284004353, 0.0103960396039604, 0.0232472324723247, 0.0214780600461894

, который содержит 27 значений, и я хотел бы разделить его на вектор чисел ниже:

dput(DF_IS2[,1])
c(0.0031682160632777, 0.00228591145206846, 0.00142094444568728, 
0.000661218113472149, 0.0010078157353918, 0.000400289437089513, 
40.4634784175177, 40.5055070858594, 0.0183737773741582)

Второй вектор в 3 раза короче, и это означает, что первые 3 значения из первого должны делиться на первое число во втором векторе. Затем значения 4-6 от первого вектора следует разделить на число 2nd в векторе 2 и т. Д. c. Я хотел бы настроить его в зависимости от количества повторов, и т. Д. c.

Ответы [ 2 ]

3 голосов
/ 05 февраля 2020

Предполагая, что 1-й вектор называется x, а 2-й y мы можем поместить x в матрицу и сделать

n <- 3
c(t(matrix(x, ncol = n, byrow = TRUE)/y))

Или с sweep

c(sweep(matrix(x, nrow = n), 2, y, `/`))
1 голос
/ 05 февраля 2020

Попробуйте

dput(DF_IS[,2]) / rep(dput(DF_IS2[,1]), each=3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...