我有這個資料框:
a <- c(2,5,90,77,56,65,85,75,12,24,52,32)
b <- c(45,78,98,55,63,12,23,38,75,68,99,73)
c <- c(77,85,3,22,4,69,86,39,78,36,96,11)
d <- c(52,68,4,25,79,120,97,20,7,19,37,67)
e <- c(14,73,91,87,94,38,1,685,47,102,666,74)
df <- data.frame(a,b,c,d,e)
我需要在 R 中回圈轉換以下腳本:變數“f”表示我的資料幀的一列(“df”),我需要它的范圍從 1 到 5(即我的資料幀中的列數) df) 在回圈中。此外,回圈必須一次考慮三行。這樣,在每個回圈中,運行腳本我都會為每個考慮的“f”找到一個“cdf_min”。
腳本:
f <- 1
x <- (df[1:3,f])
y <- (df[1:3,-f])
dif_2 <- (x - y)^2
summ <- colSums(dif_2)
summa <- t(as.matrix(summ))
cmin <- which(summa == apply(summa,1,min))
cdf_min <-
if (f <= cmin){
cmin 1
} else{cmin}
我希望我很清楚。謝謝大家幫助我!
uj5u.com熱心網友回復:
要創建for回圈,你可以遍歷f在sequence在列,并且還用它作為結果向量的索引cdf_min[f]。
cdf_min <- rep(NA, ncol(df)) ## initialize results vector
for (f in seq(ncol(df))) {
x <- df[1:3, f]
y <- df[1:3, -f]
dif_2 <- (x - y)^2
summ <- colSums(dif_2)
summa <- t(as.matrix(summ))
cmin <- which(summa == apply(summa, 1, min))
cdf_min[f] <-
if (f <= cmin) {
cmin 1
} else {
cmin
}
}
cdf_min
# [1] 5 5 4 3 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/388191.html
上一篇:在串列中拉出特定間隔的開始/結束的Pythonic方法?
下一篇:輸出指標回傳(空)而不是字符值
