Actualmente estoy escribiendo un pequeño paquete que se supone que se ajusta a los modelos de árbol de procesamiento multinomial (para no es necesario información de fondo a web page y pdf).¿Hay alguna forma de evitar el límite de 500 caracteres cuando se fuerzan expresiones a caracteres que usan as.character?
Lo que hace es lo siguiente: Lee un modelo (es decir, fórmulas) de un archivo y las convierte (a través de parse
) en expresiones. Más adelante, algunas variables de estas expresiones se intercambian por otras variables de otro archivo (es decir, se aplican restricciones de modelo). Por lo tanto, el modelo se vuelve a transformar en caracteres (a través de as.character
) y el intercambio se realiza a través de gsub
.
El problema: si una sola expresión tiene más de 500 caracteres, su transformación a través de as.character
los trunca a 500 caracteres (más o menos).
?as.character
da:
as.character trunca componentes de objetos de lenguaje a 500 caracteres (era alrededor del 70 antes 1.3.1).
Aquí un ejemplo:
text1 <- paste(rep(LETTERS, 10), collapse = " + ")
nchar(text1)
[1] 1037
expr1 <- parse(text = text1)
text2 <- as.character(expr1)
[1] 504
La pregunta: ¿Puede superar esta limitación de 500 caracteres?
Sé que podríamos evitar este problema si aplicamos las restricciones (es decir, intercambiamos las variables) antes de analizar el modelo la primera vez. Pero esto implicaría mucha programación, ya que todo está básicamente listo, y sería genial si pudiéramos superar estas limitaciones de 500 caracteres de otra manera.
Puede alguien dar una buena razón por la cual existiría un límite de este tipo en un programa moderno? –
@David Esto, es lo que pensé, también.Especialmente, ¿por qué está codificado, y no, por ejemplo, modificable en las opciones? – Henrik
Eso huele a que hay una matriz de tamaño estático, 'char s [500]' que parece coja. Tal vez hay una buena razón ... –