R语言parse函数报错:No such file or directory问题咨询
问题解答
错误原因
parse()函数的默认行为是读取文件中的代码,而非直接解析字符串。当你直接传入"df1$cyl"这类字符串时,它会把该字符串当作文件名去系统中查找,自然找不到对应文件,因此抛出"No such file or directory"错误。
是否为预期行为
这是完全符合parse()函数设计的预期行为。查看函数参数文档可知,它的第一个参数是file,默认值为空字符串;若要解析字符串形式的代码,必须显式指定text参数。
正确实现方式
方法1:显式使用text参数配合eval()
cname <- "cyl" expr <- parse(text = sprintf('%s$%s', idx[1], cname)) eval(expr)
方法2:更安全的get()+[[组合(推荐)
避免使用parse()+eval()这种存在安全风险的写法,直接用get()获取数据框对象,再通过[[提取列:
get(idx[1])[["cyl"]]
内容的提问来源于stack exchange,提问作者Unai Vicente
相关产品推荐
相关产品推荐

