Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用assign()函数将列名分配到R中的空数据框中_R_Assignment Operator - Fatal编程技术网

使用assign()函数将列名分配到R中的空数据框中

使用assign()函数将列名分配到R中的空数据框中,r,assignment-operator,R,Assignment Operator,我有一个空数据框,它的名称是由assign()函数创建的 x <- "Sale" y <- "2015" col_names <- c("Q1","Q2","Q3") assign(paste0(x,y), data.frame(matrix(nrow = 0, ncol = length(col_names)))) 我试过了,但没有成功。 有没有办法解决这个问题? 非常感谢 您可以在assign语句中包含对setNames的调用: assign(paste0(x,y),

我有一个空数据框,它的名称是由assign()函数创建的

x <- "Sale"
y <- "2015"
col_names <- c("Q1","Q2","Q3")
assign(paste0(x,y), data.frame(matrix(nrow = 0, ncol = length(col_names))))
我试过了,但没有成功。 有没有办法解决这个问题?
非常感谢

您可以在
assign
语句中包含对
setNames
的调用:

assign(paste0(x,y), 
       setNames(data.frame(matrix(nrow = 0, ncol = length(col_names))), 
                col_names)
示例:

assign("dfa", setNames(data.frame(1:3), "col1"))
> dfa
#  col1
#1    1
#2    2
#3    3

如果您已经创建了数据集,那么通用替换函数
names您遇到的困难(在后面的代码中如何引用使用动态生成的名称创建的对象)正是
assign
不好的原因。您的问题实际上是由于您希望使用
assign

将数据框放入具有非动态变量名称的列表中,并使用“动态”元素设置列表中该元素的名称:

a <- list(setNames(data.frame(matrix(nrow = 0, ncol = length(col_names))),col_names))
names(a) <- paste0(x,y)

> a
$Sale2015
[1] Q1 Q2 Q3
<0 rows> (or 0-length row.names)

a为什么需要
分配
<代码>colnames(Sale2015),因为x和y是动态的。因为x和y是动态的。如果我写colnames(Sale2015),我更喜欢这些一步(一行程序)流程,而不是多行程序!!
assign(paste0(x,y), `names<-`(get(paste0(x,y)), col_names))
a <- list(setNames(data.frame(matrix(nrow = 0, ncol = length(col_names))),col_names))
names(a) <- paste0(x,y)

> a
$Sale2015
[1] Q1 Q2 Q3
<0 rows> (or 0-length row.names)