Grzegorz SmoliĆski
2022-May-15 17:03 UTC
[R] get line from file having 'at' step in function body
Hi,
I'm looking for the reverse operation for utils::findLineNum(). Let's
take the code as below saved in file "test.R":
```
fun1 <- function() {
c(1,
2,
3)
}
```
Let's say in the file it starts from line 1, i.e. fun1 definition is
from line 1 to 5. I can now use `utils::findLineNum(fun1, line 3)[[1]]$at` to
get the location in the body, but how to get a line
having the location in the body?
Full code:
```
fun1 <- function() {
c(1,
2,
3)
}
at <- utils::findLineNum("test.R", line = 3)[[1]]$at
getSrcLocation(body(fun1)[[at]], "line") # returns NULL, because
subsetting drops the 'srcref' attribute?
```
Is there some specific function for this? The problem is that in the
example above, the 'at' points to the line 2, not 3 if I can say that
(we can check this using `utils::findLineNum(fun1, line = 2)[[1]]$at`
- returned value is the same as for line 3) and I need to get this
first line to which the 'at' refers to. The only solution I see is to
use `findLineNum` on all previous lines (from the chosen line) and see
when the 'at' has changed - if has changed, then take the last checked
line. Is there a simpler solution?
Best regards,
Grzegorz