Тяжелым способом является регулярное выражение исходного вывода. Предположим, у вас есть код:
x <- rnorm(10)
x
head(USArrests)
lm(y~x+z,
data.frame(y=rnorm(10),z=runif(10),x=rbinom(10,2,.5))
)
Вы можете сохранить его в файл и затем использовать readLines для чтения в переменную. Я делаю то же самое, используя textConnection на скопированный вывод:
to_edit <- readLines(textConnection("
> x <- rnorm(10)
> x
[1] -0.43409069 -1.05399275 1.53440218 0.05812936 1.62713995 -1.20644184
[7] -0.15698798 -2.36494897 -0.14440292 1.47182117
>
> head(USArrests)
Murder Assault UrbanPop Rape
Alabama 13.2 236 58 21.2
Alaska 10.0 263 48 44.5
Arizona 8.1 294 80 31.0
Arkansas 8.8 190 50 19.5
California 9.0 276 91 40.6
Colorado 7.9 204 78 38.7
>
> lm(y~x+z,
+ data.frame(y=rnorm(10),z=runif(10),x=rbinom(10,2,.5))
+ )
Call:
lm(formula = y ~ x + z, data = data.frame(y = rnorm(10), z = runif(10), x = rbinom(10, 2, 0.5)))
Coefficients:
(Intercept) x z
-0.6460 0.3678 0.3918
"))
Теперь некоторые правки:
id_commands <- grep("^> |^\\+ ",to_edit) # which are commands or its continuity
to_edit[id_commands] <- sub("^> |^\\+ ","",to_edit[id_commands]) # remove promt
to_edit[-id_commands] <- paste("#",to_edit[-id_commands]) # comment output
И результат:
> writeLines(to_edit) # you can specify file or write on screen
#
x <- rnorm(10)
x
# [1] -0.43409069 -1.05399275 1.53440218 0.05812936 1.62713995 -1.20644184
# [7] -0.15698798 -2.36494897 -0.14440292 1.47182117
head(USArrests)
# Murder Assault UrbanPop Rape
# Alabama 13.2 236 58 21.2
# Alaska 10.0 263 48 44.5
# Arizona 8.1 294 80 31.0
# Arkansas 8.8 190 50 19.5
# California 9.0 276 91 40.6
# Colorado 7.9 204 78 38.7
lm(y~x+z,
data.frame(y=rnorm(10),z=runif(10),x=rbinom(10,2,.5))
)
#
# Call:
# lm(formula = y ~ x + z, data = data.frame(y = rnorm(10), z = runif(10), x = rbinom(10, 2, 0.5)))
#
# Coefficients:
# (Intercept) x z
# -0.6460 0.3678 0.3918
#
Это работает, но, как я уже сказал, это больно.