假设我有一个名称列表new.var.names <- c("a", "b", "c")
。我有一个数据帧DF - 没关系它所包含的内容 - 让我们假设这样的:根据r中的名称列表为名称有效地分配一个新变量
StudyID <- c('sid124','sid66537','sid78848')
age <- c(87, 63, 45)
bmi <- c(24.3,19.2,23.5)
data <- data.frame(StudyID, age, bmi)
现在我要添加新的变量和基地名单,new.var.names
上自己的名字。我会做这样的事情:
data$NewVar <- data$bmi/data$age
但我想使多个新的变量,所以天真地我会创建这些像这样:
data$a <- data$bmi/data$age
data$b <- data$bmi/data$age
data$c <- data$bmi/data$age
显然,这不是有效的,因为在现实世界中我名单相当长 - 数百个项目。所以我想这样做:
for (v in new.var.names){
data$v <- data$bmi/data$age
}
但是,这是行不通的 - 我已经试过,不知何故,我知道它不会因此后:-P - 因为它创建了变量v
,而我想创建变量a, b, c
。我该如何解决这个问题?
感谢和最诚挚,
桑德
啊。谢谢。它虽然不起作用。我收到这样的消息:'错误在'[<-'('* tmp *',,c(v),value = c(2L,1L,1L,1L,2L,1L,1L,: invalid subsetting '(我不想创建完全相同的数据,现在我只是想不到其他的东西......) –
如果您使用自己的示例中的数据,它应该没有错误地工作,请参阅更新 – user3640617
啊,好吧,我测试了你的真实数据答案,这是行不通的,并不意味着它不会在其他情况下使用,无论哪种情况:两种答案对其他人都有用。 ! –