Imagine I give you a vector like a = (8 - 2) - (7 - 1)
which can be simplified as z = (8 - 2 - 7 1)
.
Now imagine I give you a vector consisting of nine 0
s, b = c(0,0,0,0,0,0,0,0,0)
.
Can R
turn a
to the following vector desired_output = c(1,-1,0,0,0,0,-1,1,0)
?
The logic
The numbers in a
are locations of elements in b
(ex. 8
in a
means 8th element in b
).
The logic is to assign either 1
or -1
for the elements indicated in a
based on their sign and assign 0
to all other elements in b
so to get the desired_output
.
CodePudding user response:
I don't entirely understand your problem setup — in R terms, a = (8 - 2) - (7 - 1)
is an expression rather than a vector — but here's a start:
b <- rep(0,9)
a <- c(8, -2, -7, 1)
b[abs(a)] <- sign(a)
## [1] 1 -1 0 0 0 0 -1 1 0
CodePudding user response:
- We can use
for loop
for(i in a){
if(i > 0) b[i] <- 1
else b[abs(i)] <- -1
}
- Output
[1] 1 -1 0 0 0 0 -1 1 0
- Data
a <- c(8 ,- 2 ,- 7 ,1)
b <- c(0,0,0,0,0,0,0,0,0)