我正在寫一個For-loop來改變k_et'm'具有動態名稱的列。k_et 以前不存在。b001 b002 b003 ... b012是資料框中已經存在的 12 個變數。
b001 b002 b003 ... b012
-2 2 0 ... 1
-1 1 0 ... 0
1 1 -1 ... -2
我將它們放入一個名為 b 的資料框中。(但這導致我再次生成它們。我覺得它是多余的但想不出任何其他方式。)
month <- c("001","002","003","004","005","006","007","008","009","010","011","012")
for(m in 1:length(month)) {
b <- c(paste0("b",m))
k_et[m] <- paste0("k_et",month[m])
df[,k_et[m]] <- ifelse(b[m]==1, 1, 0)
}
我希望看到:
b001 b002 b003 ... k_et001 k_et002 k_et003
-2 2 0 ... 0 0 0
-1 1 0 ... 0 1 0
1 1 -1 ... 1 1 0
但是,我所有的 k_et 結果都是 0。有什么問題?
uj5u.com熱心網友回復:
你不需要一個回圈。一次性完成。
## get the values. ifelse() keeps the dimensions
results = ifelse(df == 1, 1, 0)
## fix the names, replacing "b" with "k_et"
colnames(results) = sub(pattern = "b", replacement = "k_et", x = colnames(results))
## stick them together
df = cbind(df, results)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/414412.html
標籤:
上一篇:如何從C中的字串中列印特定字符
