titles style plots font r if-statement grammar

style - text size in r



si la declaración en R solo puede tener una línea? (5)

Estaba intentando un código pequeño con la instrucción if, aunque es muy simple, pero hay algo que realmente confundí aquí es el código

n<-857 while(n!=1){ if(n<=0) print("please input a positive integer") else if(n%%2==0) n<-n/2 print(n) else n<-3*n+1 print(n) }

como vemos arriba, al ejecutar este código en R, aparece el error, pero si cambio la instrucción if como esta

if(n<=0) print("please input a positive integer") else if(n%%2==0) n<-n/2 else n<-3*n+1

Está bien, mi pregunta es: ¿podemos solo escribir una línea debajo de cada juicio? si quiero hacer algo más después de cada juez, ¿qué debo hacer? Al igual que en este caso, quiero cambiar el valor de n, pero también quiero mostrarlo, ¿qué debo hacer? muchas gracias


¿Has oído hablar alguna vez de barbas rizadas?

n<-857 while(n!=1){ if(n<=0) { print("please input a positive integer") } else if(n%%2==0) { n<-n/2 print(n) } else { n<-3*n+1 print(n) } }


Debe usar {} para permitir que la instrucción if tenga más de una línea. Prueba esto:

n<-857 while(n!=1){ if(n<=0){ print("please input a positive integer") } else if(n%%2==0){ n<-n/2 print(n) } else { n<-3*n+1 print(n) } }


Para agrupar los enunciados, rodéelos con llaves como lo has hecho con el ciclo while:

if(n<=0) { print("please input a positive integer") } else if(n%%2==0) { n<-n/2 print(n) } else { n<-3*n+1 print(n) }

Esto le permitirá colocar múltiples declaraciones dentro de if , else if y else final.


Para ser precisos, no se trata de líneas sino de enunciados . Puede tener toda la instrucción if else en una línea:

> if (TRUE) 1 else 3 [1] 1

Una declaración terminará al final de la línea (si está completa), puede ver eso muy bien en modo interactivo si ingresa el código línea por línea:

> if (TRUE) + 1 [1] 1 > else Fehler: Unerwartete(s) ''else'' in "else" # error: unexpected ''else'' in "else" > 3 [1] 3

if puede venir en forma if (condition) statement o if (condition) statement else other.statement , el intérprete asume que la primera versión se entiende si la instrucción se completa después de la línea 2 - en modo interactivo no puede esperar sensiblemente si aparece un else next . Esto es diferente en el source de source d: allí está claro con la siguiente línea de qué forma se trata.

Los puntos y coma terminan también con las declaraciones:

> if (TRUE) 1; else 3 [1] 1 Fehler: Unerwartete(s) ''else'' in " else" # error: unexpected ''else'' in "else"

Pero solo puede tener una declaración en cada rama de la condición.

> if (TRUE) 1; 2 else 3 [1] 1 Fehler: Unerwartete(s) ''else'' in " 2 else" # error: unexpected ''else'' in "2 else"

Las llaves del cursivas agrupan las declaraciones para que aparezcan como una sola declaración.

> if (TRUE) {1; 2} else 3 [1] 2


mientras que la respuesta directa es, como se ha observado, usar llaves;
vale la pena agregar que puede integrar el operador <- asignación en muchas funciones.

En tu caso específico:

print(n <- 3*n+1) ## instead of # n <- 3*n+1 # print(n)

tenga en cuenta que usar = aquí NO funcionará. Debe ser <-