0
我正在尝试在r中创建一个for循环1.在数据框中创建新列并2.计算多个变量的一些简单表达式。使用r for循环来创建数据帧中的新列
我的数据框有10列和22列
df <- setNames(data.frame(replicate(22,sample(0:10,10,rep=TRUE))),
sprintf("rmeas%s",seq(from = 0, to = 84, by = 4)))
我想创建一个简单的for循环来创建21个名为“rmaster”后跟一个数字(4-84 4)新列。第一个新列(DF $ rmaster4)将通过以下计算来填充:
df$rmaster4 <- (df$rmeas4^3 + df$rmeas0*df$rmeas4+ df$rmeas0^2)/2.12352
到目前为止,我有以下代码:
for(i in seq(from = 0, to = 84, by = 4)) {
assign("df", `$<-`(df, paste0("rmaster", i+4),
(get(paste0("x$rmeas", i+4))^3 +
get(paste0("x$rmeas", i))*get(paste0("x$rmeas", i+4)) +
get(paste0("x$rmeas", i+4))^2)/2.12352))
}
似乎有好多事错在这里。对于初学者,我想创建rmaster4-rmaster84,这个代码会创建rmaster4-rmaster88。接下来,我知道我不能以我所拥有的方式使用get()函数。不幸的是,我无法补救这些问题。任何有识之士将不胜感激。
'DF [[paste0( “rmaster”,I + 4)]] = DF [[paste0( “rmeas”,I + 4)]]^3 + ...' – eddi
你不应该在R中使用'assign',除非你明白为什么你不应该在R.中使用'assign'。 – eddi
谢谢。你的回应现在对我来说似乎非常明显。 你有什么关于为什么使用'assign'是否是否定的链接?我很欣赏这种见解。 – afleishman