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);
注意,可以用” <-“代替”=”
例如:
输出:
我们也可以在控制台窗口显示信息,告诉用户应该在程序中输入什么。要做到这一点,必须在 readline() 函数中使用一个名为 prompt 的 参数。事实上, prompt 参数为其他函数构建文件提供了便利。但 提示参数 不是必须一直使用的。
语法 :
var1 = readline(prompt = “Enter any number : “);
或者,
var1 = readline(“Enter any number : “)。
例子:
输出:
R语言 获取多个输入
在R语言中获取多个输入和获取单个输入是一样的,只是需要为输入定义多个 readline() 。可以用 大括号 在里面定义多个 readline() 。
语法 :
例子:
输出:
R语言 获取字符串和字符输入
接受字符串输入与接受整数输入是一样的。对于 “字符串”,不需要将输入的数据转换成字符串,因为R总是将输入作为字符串。而对于 “字符”,需要转换为 “字符”。有时它可能不会引起任何错误。人们也可以把字符输入当作字符串,但输入的数据在整个程序中都是字符串类型。因此,将输入的数据作为 “字符 “使用的最好方法是将数据转换为字符。
语法 :
string :
var1 = readline(prompt = “Enter your name : ” );
character :
var1 = readline(prompt = “Enter any character : ” );
var1 = as.character(var1)
例如:
输出:
使用scan()方法
在R语言中获取用户输入的另一种方式是使用一个方法,称为 scan() 方法。这个方法从控制台获取输入。当需要为任何数学计算或任何数据集快速获取输入时,这个方法是一个非常方便的方法。该方法以向量或列表的形式读取数据。这个方法也可以用来从文件中读取输入。
语法:
x = scan()
scan() 方法是持续地接受输入,要终止输入过程,需要在控制台按2次 回车键 。
例子:
这是一个使用 scan() 方法获取输入的简单方法,一些整数被作为输入,并在控制台的下一行打印这些数值。
输出:
说明 :
在两行中共有12个整数被输入,当控制到第三行时,按2次 回车键 ,输入过程将被终止。
使用scan()方法获取双倍、字符串、字符类型的值
要获取双倍、字符串、字符类型的输入,请在 scan() 方法中指定输入值的类型。要做到这一点,有一个叫做 what的 参数,通过它可以指定输入值的数据类型。
语法:
x = scan(what = double()) -用于双倍数
x = scan(what = ” “) -用于字符串
x = scan(what = character()) -用于字符串
例如:
输出:
解释 :
这里,双倍项的数量是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
示例:
输出:
将数据文件保存在程序保存的同一位置,以便更好地访问。否则文件的总路径需要在 scan() 方法中定义。