Posso encontrar o caminho para R usando Sys.getenv()
assim:
Sys.getenv("R_HOME")
[1] "C:/PROGRA~1/R/R-41~1.1"
No entanto, estou tentando encontrar o R_HOME com a Environ
função do Excel VBA com uma sub-rotina mais ou menos assim:
Sub findR()
Dim a As String
a = Environ$("R_HOME")
MsgBox a
End Sub
A caixa de mensagem retorna vazia. R_HOME está no ambiente, mas por algum motivo Environ
não consegue encontrá-lo. Veja uma captura de tela anexada mostrando R_HOME no ambiente. Alguém poderia me indicar a direção certa para encontrar R_HOME com Environ VBA?
Esta função VBA, GetREnviron, foi projetada para recuperar variáveis de ambiente de uma instalação R, como R_HOME, executando um pequeno script R por meio da linha de comando do Windows.
Parâmetro EnvName: A função recebe um parâmetro, EnvName, que é o nome da variável de ambiente que você deseja recuperar (por exemplo, "R_HOME").
Construção do script R: a função cria dinamicamente um pequeno script R (Rscript -e "cat(Sys.getenv('EnvName'))") para recuperar o valor da variável de ambiente especificada usando a função Sys.getenv do R.
Execução do Shell: Ele usa o objeto WScript.Shell para executar o script R e capturar a saída (StdOut.ReadAll). Esta saída é o valor da variável de ambiente.
Corte de saída: quaisquer espaços em branco extras ou caracteres de nova linha são cortados da saída.
Tratamento de erros: se algo der errado (por exemplo, o R não estiver instalado ou a variável não existir), a função retornará uma mensagem de erro genérica, "Erro: Não é possível recuperar EnvName".
Essa abordagem permite recuperar dinamicamente qualquer variável de ambiente R passando seu nome como um argumento para a função.
Adenda
Explicação das alterações: