如何用对象中的名称为列表内的DataFrame命名?
可行的实现方法
在R中,直接在list()函数参数里用变量作为元素名称会被解析为字面量,所以需要用以下几种方式实现:
方法1:通过列表索引赋值
先创建空列表,再用变量作为索引添加元素并命名:
df <- mtcars tablename <- "table_mtcars" list_of_datasets <- list() list_of_datasets[[tablename]] <- df
方法2:使用setNames()函数
利用setNames()直接给列表元素绑定变量存储的名称:
df <- mtcars tablename <- "table_mtcars" list_of_datasets <- setNames(list(df), tablename)
方法3:修改列表的names属性
先创建包含DataFrame的列表,再通过names()函数设置元素名称:
df <- mtcars tablename <- "table_mtcars" list_of_datasets <- list(df) names(list_of_datasets) <- tablename
为什么之前的写法失败?
在list(x = y)的语法中,x会被当作字面量名称处理,所以list(tablename = df)会把元素命名为"tablename"而非变量中的字符串;而eval()、parse()这类函数调用放在赋值符号左侧属于语法错误,因为赋值左侧必须是合法的名称表达式,不能是函数返回值。
内容的提问来源于stack exchange,提问作者Shaun
相关产品推荐
相关产品推荐

