通过使用一个变量从粘贴函数定义的colname向dataframe添加新列
我想在数据框中添加4个新列,它们的colname是使用一个名为的变量从粘贴函数中定义的,但它不起作用通过使用一个变量从粘贴函数定义的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"=
# 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)]