Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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
通过使用一个变量从粘贴函数定义的colname向dataframe添加新列_R_Dataframe - Fatal编程技术网

通过使用一个变量从粘贴函数定义的colname向dataframe添加新列

通过使用一个变量从粘贴函数定义的colname向dataframe添加新列,r,dataframe,R,Dataframe,我想在数据框中添加4个新列,它们的colname是使用一个名为的变量从粘贴函数中定义的,但它不起作用 # Data sample : Data = data.frame("Dummy"=rbind("0000006498","0000012926","0000020320","0000023283","0000023879"), stringsAsFactors=F) # This works: Stat = cbind.data.frame(Data, "Pre0"=NA, "Pre1"=

我想在数据框中添加4个新列,它们的colname是使用一个名为的变量从粘贴函数中定义的,但它不起作用

# Data sample :
Data = data.frame("Dummy"=rbind("0000006498","0000012926","0000020320","0000023283","0000023879"), stringsAsFactors=F)


# This works:
Stat = cbind.data.frame(Data, "Pre0"=NA, "Pre1"=NA, "PreA"=NA, "PreZE"=NA)

# Result:
#> Stat
#  Dummy       Pre0 Pre1 PreA  PreZE
#1 0000006498   NA   NA   NA    NA
#2 0000012926   NA   NA   NA    NA
#3 0000020320   NA   NA   NA    NA
#4 0000023283   NA   NA   NA    NA
#5 0000023879   NA   NA   NA    NA


# But I want do to the same result using a <Mod> variable to generate the column names like this:
Mod = c("0", "1", "A", "ZE")
Stat = cbind.data.frame(Data, noquote(paste0('"', paste(paste0('Pre' , Mod, '"=NA'), collapse=', "'))))

# It doesn't work and the result is:
#Error in data.frame(..., check.names = FALSE): 
#  les arguments impliquent des nombres de lignes différents : 5, 1

# Despite of the "noquote" part of code seems to work:
#> noquote(paste0('"', paste(paste0('Pre' , Mod, '"=NA'), collapse=', "')))
#[1] "Pre0"=NA, "Pre1"=NA, "PreA"=NA, "PreZE"=NA
#数据样本:
Data=Data.frame(“Dummy”=rbind(“0000006498”、“0000012926”、“0000020320”、“0000023283”、“0000023879”),stringsAsFactors=F)
#这项工作:
Stat=cbind.data.frame(数据,“Pre0”=NA,“Pre1”=NA,“PreA”=NA,“PreZE”=NA)
#结果:
#>统计
#虚拟Pre0 Pre1 PreA PreZE
#1000006498纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳
#20000012926不适用
#3000020320不适用
#4000023283纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳
#50万23879纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳
#但是我想使用一个变量来生成列名,以获得相同的结果,如下所示:
Mod=c(“0”、“1”、“A”、“ZE”)
Stat=cbind.data.frame(数据,noquote(粘贴0(“”),粘贴(粘贴0('Pre',Mod,“=NA'),折叠=”,“))
#它不起作用,结果是:
#data.frame(…,check.names=FALSE)中出错:
#两个不同名称的参数:5,1
#尽管代码中的“noquote”部分似乎有效:
#>noquote(粘贴0(“”),粘贴(粘贴0('Pre',Mod,“=NA'),折叠=”,“'))
#[1] “Pre0”=NA,“Pre1”=NA,“PreA”=NA,“PreZE”=NA

提前感谢您的帮助。

您可以直接将
NA
分配给列:

Data[paste0("Pre", Mod)] <- NA

Data
#       Dummy Pre0 Pre1 PreA PreZE
#1 0000006498   NA   NA   NA    NA
#2 0000012926   NA   NA   NA    NA
#3 0000020320   NA   NA   NA    NA
#4 0000023283   NA   NA   NA    NA
#5 0000023879   NA   NA   NA    NA
Data[paste0(“Pre”,Mod)]只需执行
Data[paste0(“Pre”,Mod)]