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