R语言中readline()与scan()的区别及正确使用方法
R中
readline()与scan()的核心适用场景及使用方法 核心适用场景对比
两个函数的设计定位完全不同,核心差异如下:
readline():仅适用于交互式场景下读取用户单行输入,一次只能读取一行内容,返回长度为1的字符串向量,是专门为脚本和用户的实时交互设计的,不支持读取外部文件。scan():核心定位是读取结构化文本数据,既支持从控制台交互式读入多个值,也支持直接读取外部文本文件,可自定义分隔符、数据类型、跳过行数等规则,返回对应类型的向量,多用于数据批量导入场景。
正确使用示例
readline() 使用说明
仅可在R交互式环境(RStudio控制台、交互运行的脚本)中使用,通常用来引导用户输入信息,输入内容默认全部为字符串格式,需要其他类型要手动转换:
# 引导用户输入文本信息 user_name <- readline(prompt = "请输入你的姓名:") # 输入数值时需要手动转换类型 user_age <- as.integer(readline(prompt = "请输入你的年龄:"))
注意:非交互模式运行脚本时调用readline()会直接返回空字符串,不要在批量执行的离线脚本中使用该函数。
scan() 使用说明
场景1:交互式输入多值
支持一次性读入多个分隔开的内容,输入空行即可结束读取:
# 读取多个数值,默认以空格、换行作为分隔符 score_vec <- scan(prompt = "请输入多个考试成绩,空格分隔,输完按两次回车结束:") # 指定读取字符串类型的内容 name_vec <- scan(what = character(), prompt = "请输入多个姓名,空格分隔:")
场景2:读取外部文本文件
可以直接读取本地结构化文本文件,自定义读取规则:
# 读取同目录下空格分隔的txt文件,返回数值向量 data <- scan(file = "data.txt") # 自定义规则:跳过前2行注释行,按逗号分隔,最多读取10个值 custom_data <- scan(file = "data.csv", sep = ",", skip = 2, nmax = 10)
注意:如果读入的内容和指定的类型不匹配会直接报错,读取前需要确认源数据的格式规则。
内容的提问来源于stack exchange,提问作者KapitanPilips
相关产品推荐
相关产品推荐

