我在R中有一个for循环,我想在名为rand1,rand2,rand3等的数据框中创建10个不同的变量......这是我先尝试过的:
for (rep in 1:10) {
assign(paste('alldata200814$rand', rep, sep=""), runif(nrow(alldata200814), 0, 1))
}
但这不起作用 - 没有错误/警告信息,所以我不知道为什么,但当我尝试提交
alldata200814$rand1
它说它是NULL . 那么我将for循环更改为:
for (rep in 1:10) {
assign(paste('rand', rep, sep=""), runif(nrow(alldata200814), 0, 1))
}
它创建变量rand1 - rand10,但现在我想将它们附加到我的数据框 . 所以我尝试过:
for (rep in 1:10) {
assign(paste('rand', rep, sep=""), runif(nrow(alldata200814), 0, 1))
alldata200814 <- cbind(alldata200814, paste('rand', rep, sep=""))
}
但是这只会在每一行中创建带有'rand1','rand2','rand3'等的列 . 然后我真的很接近这样做:
for (rep in 1:10) {
data<-assign(paste('rand', rep, sep=""), runif(nrow(alldata200814), 0, 1))
alldata200814 <- cbind(alldata200814, data)
}
但是当我希望它们是“rand1”,“rand2”,“rand3”等时,它将所有10列随机数命名为“data”...而且我不确定如何在循环中重命名它们 . 我以前在10个不同的行编程,如:
alldata200814$rand1<-runif(nrow(alldata200814), 0, 1)
但我可能不得不这样做100次而不是10次,所以我需要找到一个更好的方法来做到这一点 . 任何帮助表示赞赏,如果您需要更多信息,请告诉我们 . 谢谢!
1 回答
停止使用
assign
. 期 . 直到你知道何时使用它,不信任任何人告诉你使用它 .另一个重要的习惯用语(并且比任何涉及
assign
的东西更可取)是你可以创建对象,然后在事后修改名称 . 例如,现在,您可以使用
names(alldata200814) <- column_names
更改列名称 . 您甚至可以使用子集来仅分配给特定的列名,如下所示: