R语言 接受用户的输入
开发人员经常需要与用户互动,要么是为了获得数据,要么是为了提供某种结果。今天,大多数程序都使用对话框作为要求用户提供某种类型的输入的方式。像其他编程语言一样,在R中也可以接受用户的输入。为了做到这一点,在R语言中有两种方法。
- 使用 readline() 方法
- 使用 scan()方法
使用readline()方法
在R语言中, readline() 方法接受字符串格式的输入。如果一个人输入一个整数,那么它将被输入为一个字符串,比如说,一个人想输入 255 ,那么它将被输入为 “255 “,就像一个字符串。所以人们需要将输入的值转换成他所需要的格式。在这种情况下,字符串 “255 “被转换为整数255。为了将输入的值转换为所需的数据类型,R中有些函数,
- as.integer(n ); -> 转换为整数
- as.numeric(n) ;->转换为数字类型(浮点,双倍等)。
- as.complex(n) ; -> 转换为复数(即3+2i)
- as.Date(n) — 转换为日期…,等等。
语法:
var = readline();
var = as.integer(var);
注意,可以用” <-“代替”=”
例如:
# R program to illustrate
# taking input from the user
# taking input using readline()
# this command will prompt you
# to input a desired value
var = readline();
# convert the inputted value to integer
var = as.integer(var);
# print the value
print(var)
输出:
255
[1] 255
我们也可以在控制台窗口显示信息,告诉用户应该在程序中输入什么。要做到这一点,必须在 readline() 函数中使用一个名为 prompt 的 参数。事实上, prompt 参数为其他函数构建文件提供了便利。但 提示参数 不是必须一直使用的。
语法 :
var1 = readline(prompt = “Enter any number : “);
或者,
var1 = readline(“Enter any number : “)。
例子:
# R program to illustrate
# taking input from the user
# taking input with showing the message
var = readline(prompt = "Enter any number : ");
# convert the inputted value to an integer
var = as.integer(var);
# print the value
print(var)
输出:
Enter any number : 255
[1] 255
R语言 获取多个输入
在R语言中获取多个输入和获取单个输入是一样的,只是需要为输入定义多个 readline() 。可以用 大括号 在里面定义多个 readline() 。
语法 :
var1 = readline(“Enter 1st number : “);
var2 = readline(“Enter 2nd number : “);
var3 = readline(“Enter 3rd number : “);
var4 = readline(“Enter 4th number : “);
or,
{
var1 = readline(“Enter 1st number : “);
var2 = readline(“Enter 2nd number : “);
var3 = readline(“Enter 3rd number : “);
var4 = readline(“Enter 4th number : “);
}
例子:
# R program to illustrate
# taking input from the user
# taking multiple inputs
# using braces
{
var1 = readline("Enter 1st number : ");
var2 = readline("Enter 2nd number : ");
var3 = readline("Enter 3rd number : ");
var4 = readline("Enter 4th number : ");
}
# converting each value
var1 = as.integer(var1);
var2 = as.integer(var2);
var3 = as.integer(var3);
var4 = as.integer(var4);
# print the sum of the 4 number
print(var1 + var2 + var3 + var4)
输出:
Enter 1st number : 12
Enter 2nd number : 13
Enter 3rd number : 14
Enter 4th number : 15
[1] 54
R语言 获取字符串和字符输入
接受字符串输入与接受整数输入是一样的。对于 “字符串”,不需要将输入的数据转换成字符串,因为R总是将输入作为字符串。而对于 “字符”,需要转换为 “字符”。有时它可能不会引起任何错误。人们也可以把字符输入当作字符串,但输入的数据在整个程序中都是字符串类型。因此,将输入的数据作为 “字符 “使用的最好方法是将数据转换为字符。
语法 :
string :
var1 = readline(prompt = “Enter your name : ” );
character :
var1 = readline(prompt = “Enter any character : ” );
var1 = as.character(var1)
例如:
# R program to illustrate
# taking input from the user
# string input
var1 = readline(prompt = "Enter your name : ");
# character input
var2 = readline(prompt = "Enter any character : ");
# convert to character
var2 = as.character(var2)
# printing values
print(var1)
print(var2)
输出:
Enter your name : GeeksforGeeks
Enter any character : G
[1] "GeeksforGeeks"
[1] "G"
使用scan()方法
在R语言中获取用户输入的另一种方式是使用一个方法,称为 scan() 方法。这个方法从控制台获取输入。当需要为任何数学计算或任何数据集快速获取输入时,这个方法是一个非常方便的方法。该方法以向量或列表的形式读取数据。这个方法也可以用来从文件中读取输入。
语法:
x = scan()
scan() 方法是持续地接受输入,要终止输入过程,需要在控制台按2次 回车键 。
例子:
这是一个使用 scan() 方法获取输入的简单方法,一些整数被作为输入,并在控制台的下一行打印这些数值。
# R program to illustrate
# taking input from the user
# taking input using scan()
x = scan()
# print the inputted values
print(x)
输出:
1: 1 2 3 4 5 6
7: 7 8 9 4 5 6
13:
Read 12 items
[1] 1 2 3 4 5 6 7 8 9 4 5 6
说明 :
在两行中共有12个整数被输入,当控制到第三行时,按2次 回车键 ,输入过程将被终止。
使用scan()方法获取双倍、字符串、字符类型的值
要获取双倍、字符串、字符类型的输入,请在 scan() 方法中指定输入值的类型。要做到这一点,有一个叫做 what的 参数,通过它可以指定输入值的数据类型。
语法:
x = scan(what = double()) -用于双倍数
x = scan(what = ” “) -用于字符串
x = scan(what = character()) -用于字符串
例如:
# R program to illustrate
# taking input from the user
# double input using scan()
d = scan(what = double())
# string input using 'scan()'
s = scan(what = " ")
# character input using 'scan()'
c = scan(what = character())
# print the inputted values
print(d) # double
print(s) # string
print(c) # character
输出:
1: 123.321 523.458 632.147
4: 741.25 855.36
6:
Read 5 items
1: geeksfor geeks gfg
4: c++ R java python
8:
Read 7 items
1: g e e k s f o
8: r g e e k s
14:
Read 13 items
[1] 123.321 523.458 632.147 741.250 855.360
[1] "geeksfor" "geeks" "gfg" "c++" "R" "java" "python"
[1] "g" "e" "e" "k" "s" "f" "o" "r" "g" "e" "e" "k" "s"
解释 :
这里,双倍项的数量是5,排序项的数量是7,字符项的数量是13。
使用scan()方法读取文件数据
使用 scan() 方法读取文件与普通的控制台输入相同,唯一的问题是,需要将文件名和数据类型传递给 scan() 方法。
语法:
x = scan(“fileDouble.txt”, what = double()) –for double
x = scan(“fileString.txt”, what = ” ” ) –for string
x = scan(“fileChar.txt”, what = character() –for character
示例:
# R program to illustrate
# taking input from the user
# string file input using scan()
s = scan("fileString.txt", what = " ")
# double file input using scan()
d = scan("fileDouble.txt", what = double())
# character file input using scan()
c = scan("fileChar.txt", what = character())
# print the inputted values
print(s) # string
print(d) # double
print(c) # character
输出:
Read 7 items
Read 5 items
Read 13 items
[1] "geek" "for" "geeks" "gfg" "c++" "java" "python"
[1] 123.321 523.458 632.147 741.250 855.360
[1] "g" "e" "e" "k" "s" "f" "o" "r" "g" "e" "e" "k" "s"
将数据文件保存在程序保存的同一位置,以便更好地访问。否则文件的总路径需要在 scan() 方法中定义。