R语言乘法表代码报错:NAs introduced by coercion 求助
Hey there! Let's break down why you're seeing that NAs introduced by coercion warning and the NA x 10 = NA output, then fix it up.
What's Actually Causing the Problem?
First off—your for(i in 1:10) line isn't the culprit! The issue happens because when you ran the code, you entered a value that can't be converted to an integer (like text, a non-integer decimal, or even a blank input). The as.integer(readline(...)) function can't turn that invalid input into a number, so it returns NA instead. Then when your loop tries to multiply NA with each number from 1 to 10, every result ends up as NA too.
How to Fix It (With Input Validation)
To stop this from happening, we can add a simple check to make sure the user enters a valid integer before running the multiplication loop. Here's an improved version of your code:
# Multiplication table with input validation while(TRUE) { input <- readline(prompt = "Enter the number: ") num <- as.integer(input) # Check if the conversion to integer worked if(!is.na(num)) { break # Exit the loop if we have a valid integer } # If not, prompt the user to try again cat("Oops! That's not a valid integer. Please enter a whole number.\n") } # Now run the multiplication loop with the valid number for(i in 1:10) { print(paste(num, 'x', i, '=', num*i)) }
What This Does
- The
while(TRUE)loop keeps asking for input until the user enters something that can be converted to an integer. - If the input is invalid (like "abc" or "2.7"), it shows a friendly error message and asks again.
- Once a valid integer is entered, the loop exits, and the multiplication table runs correctly with no NA values.
内容的提问来源于stack exchange,提问作者Abdulrehman

