我正在嘗試使用依賴于另一個表中的數字的簡單計算來填充長度為 4 的向量。最右邊的列“nrow”是 中行的總和table 4.1。Table6.row是表示行名中元素個數的向量:99=0,a,b,d都=1,bd=2,abd=3。我想,以填補goalvector[1]與商table4.1[1, "nrow"]和N。goalvector[2]將填充 和 之table4.1[2:4, "nrow"]和的商N,因為table4.1所有行的 2:4表示單個元素(a、b 和 d)。以下是我的可重現示例:
table6.row <- c(0,1,1,1,2,3)
table4.1 <- matrix(data=c(0,0,0,1,1,0,0,0,1,0,1,1,1,2,0,0,0,0,0,0,0,0,0,0,1,2,1,1,2,1), nrow=6, ncol=5)
colnames(table4.1) <- c("U1", "U2", "U3", "U4", "nrow")
rownames(table4.1) <- c("99", "a", "b", "d", "bd", "abd")
下面是我嘗試運行的帶有 if...else 陳述句的回圈,以最終在末尾創建向量 ( goalvector)。
goalvector <- numeric()
n.card <- 0
P <- 1
N <- 8
for (i in ncol(table4.1)) {
if(table6.row[i]==0) {
n.card <- table4.1[i, "nrow"]
} else if(table6.row[i]==table6.row[i-1]) {
n.card <- n.card table4.1[i, "nrow"]
} else {
goalvector[P] <- n.card/N
n.card <- 0
P <- P 1
n.card <- table4.1[i,"nrow"]
}
}
我想要的輸出:
goalvector <- c(.125, .5, .25, .125)
其中goalvector[1]等于 0.125 或 1/8,是table4.1[1,"nrow"]和的商N。goalvector[2]等于 0.5 或 4/8,這是table4.1[2:4, "nrow"]over的總和N,因為table4.1[,"nrow"]所有行中的 2:4表示行名中具有單個元素的行(a、b 和 d)。goalvector[3]等于 0.25 或 2/8,是table4.1[5, "nrow"]和的商,N因為這是唯一代表兩個元素 (bd) 的行。
uj5u.com熱心網友回復:
據我所知,您想table4.1[, "nrow"]通過 in中的值來總結中的值table6.row。然后,將該總和除以N,在本例中為 8。您可以使用aggregate基礎 R 中的函式來做到這一點。
N <- 8
goalvector <- aggregate(x ~ y, data.frame(x = table4.1[, "nrow"], y = table6.row), sum)$x / N
goalvector
輸出
[1] 0.125 0.500 0.250 0.125
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/405551.html
標籤:
上一篇:if陳述句的正確寫法:
下一篇:如果在第一次匹配后停止檢查真/假
