如何在R函数中使用字符串输入命名生成的数据集?
解决方法
你的问题出在函数里直接用name<<-赋值,这只会创建一个名为name的全局变量,而不是用参数x传入的字符串作为变量名。可以用以下两种方式解决:
方法1:使用assign()函数直接操作全局环境
这个方法可以直接将提取的数据以你指定的名称存入全局环境:
create_dataset <- function(x, rows, columns) { # 先提取需要的数据 extracted_data <- df[rows, columns] # 将数据赋值到全局环境,变量名为传入的x字符串 assign(x, extracted_data, envir = .GlobalEnv) } # 调用函数 create_dataset(x="skildpadde", rows=690:692, columns=2:7)
调用后,全局环境中就会出现名为skildpadde的数据框。
方法2:让函数返回数据框,自行赋值(更推荐)
直接修改全局环境容易产生副作用,更符合R编程规范的做法是让函数返回提取的数据,由你自己赋值给指定变量:
create_dataset <- function(rows, columns) { # 返回提取的数据 df[rows, columns] } # 调用时手动赋值给目标变量 skildpadde <- create_dataset(rows=690:692, columns=2:7)
这种方式更清晰,也更容易排查问题。
内容的提问来源于stack exchange,提问作者Salt_Industry
相关产品推荐
相关产品推荐

