В настоящее время я имею большую матрицу (3000x20) и хочу вычислить значение, используя значения в первой строке, первом столбце и векторе. Мой набор данных (в Excel), как это (я использую VBA код для создания этой первенствовать):Как использовать функцию apply вместо вложенного цикла?
SumRow = 0
SumCol = 0
RowInterval = 0.001
ColInterval = 0.01
For i = 2 To 3001
Cells(i, 1).Value = SumRow + RowInterval
SumPD = Cells(i, 1).Value
Next i
For j = 2 To 21
Cells(1, j).Value = SumCol + ColInterval
SumRho = Cells(1, j).Value
Next j
настоящее время я использую следующий R код сделать расчет
InputVector <- c(1,2,3,4,5,6,7,8,9,10)
Testing<-read.csv("InputFile.csv", header=FALSE)
for (m in (2:(3001)))
{ for (n in (2:21))
{ Sum = 0
Row = Testing(m,1)
Col = Testing(1,n)
for (p in (1:length(InputVector)))
{ Sum = Sum + sqrt((1-Col)/Col)*exp(Row) }
Testing[m,n] = Sum } }
write.csv(Testing, "TestingOutput.csv")
В основном это первые путы вектор (значения x) в формулу f (x), и я хочу напечатать сумму f (x) на excel с разными параметрами, перечисленными в первой строке и первом столбце в excel. Я запускаю вышеуказанный код, и он работает, но это занимает очень много времени. Я новичок в применении функции, и могу ли я узнать, как я могу использовать функцию apply, чтобы ускорить вычисление и сделать тот же вывод, что и выше?
'apply' ничего не ускорит, если вы не будете писать более эффективную процедуру (как это то же' для 'loop вы уже используете). Если вы хотите получить помощь, я предлагаю вам предоставить часть набора данных InputFile.csv и показать желаемый результат. –
Я думаю, что есть ошибка в коде VBA. Вы хотите «SumRow = Cells (i, 1) .Value' и' SumCol = Cells (1, j) .Value'. – tchakravarty
У вас нет нигде рядом с юридическим кодом R. – tchakravarty