Я новичок в R и столкнулся со следующей проблемой. Мне нужно преобразовать выражение из Mathematica в R. В Mathematica синтаксис следующий:
hc=-1.5;
g[x_]:=If[x<0,Ceiling[Abs[x]],Floor[x]];
Sum[f[i,j],{i,0,5},{j,0,i+Sign[hc]*g[hc]}]
вывод следующий:
f[2,0]+f[3,0]+f[3,1]+f[4,0]+f[4,1]+f[4,2]+f[5,0]+f[5,1]+f[5,2]+f[5,3]
Теперь я пытаюсь сделать то же самое в R. Так как я ищу, как это сделать, я использую double для итерации, чтобы просто напечатать элементы, которые я буду суммировать позже.
следовательно я пишу
hcp = -1.5
ceil_floor = function (x) {
if(x < 0) {
ceiling( abs(x))
} else {
floor(x)
}
}
for (i in 0:5) {
for (j in 0 : (i + (sign(hcp) * ceil_floor(hcp)))) {
print( paste0(i,":",j) )
}
}
который печатает:
[1] "0:0"
[1] "0:-1"
[1] "0:-2"
[1] "1:0"
[1] "1:-1"
[1] "2:0"
[1] "3:0"
[1] "3:1"
[1] "4:0"
[1] "4:1"
[1] "4:2"
[1] "5:0"
[1] "5:1"
[1] "5:2"
[1] "5:3"
Проблема здесь заключается в: 0-0,1: 0, 0: -1,0: -2,1: -1. На самом деле у меня нет проблем с отрицательными значениями, так как в конечном итоге все y будут равны нулю, но я не должен получать 0-0,1-0. Я думаю, что R обрабатывает for (i in 0:(-2))
иначе, чем mathematica.
Может кто-нибудь помочь?