我試圖從等于 2的資料框中提取行和列名稱組合,并將它們插入到 2x9 資料框中。第一列具有行名稱,第二列具有資料框的列名稱。
這是資料框(DF)的較小比例示例:
| 一種 | 乙 | C | |
|---|---|---|---|
| 一種 | 5 | 2 | 1 |
| 乙 | 8 | 4 | 2 |
| C | 2 | 8 | 1 |
我想像這樣填充一個空的 2x9資料框(SD):
| 行名 | 列名 |
|---|---|
| 不適用 | 不適用 |
| 不適用 | 不適用 |
| C | 一種 |
| 一種 | 乙 |
| 不適用 | 不適用 |
| 不適用 | 不適用 |
| 不適用 | 不適用 |
| 乙 | C |
| 不適用 | 不適用 |
我正在使用以下代碼(k是我正在處理的難題):
DF <- data.frame(A <- c(5, 8, 2),
B <- c(2, 4, 8),
C <- c(1, 2, 1),
row.names = c("A", "B", "C"))
SD <- data.frame(RowNames = c(rep(NA,9)),
ColumnNames = c(rep(NA,9)))
for(i in 1:nrow(DF)) {
for(j in 1:ncol(DF)) {
ifelse(DF[i,j] == 2, SD[k,1] <- rownames(DF[i,]), SD[k,1] <- NA )
ifelse(DF[i,j] == 2, SD[k,2] <- colnames(DF[,j]), SD[k,2] <- NA )
}
}
問題:我想不出使用 i 和 j的公式可以讓k在回圈中從1運行到 9。
我只寫了幾個月的代碼,所以如果我在這里遺漏了什么,請見諒。
uj5u.com熱心網友回復:
除了這條評論:
嘗試
k <- i (ncol(DF)*(j-1))或k <- j (nrow(DF)*(i-1))取決于它是按行還是按列。
子集行名稱??而不是表。
DF <- data.frame(A = c(5, 8, 2),
B = c(2, 4, 8),
C = c(1, 2, 1),
row.names = c("A", "B", "C"))
SD <- data.frame(RowNames = c(rep(NA,9)),
ColumnNames = c(rep(NA,9)))
for(i in 1:nrow(DF)) {
for(j in 1:ncol(DF)) {
k <- i (ncol(DF)*(j-1))
SD[k,1] <- ifelse(DF[i,j] == 2, rownames(DF)[i], NA)
SD[k,2] <- ifelse(DF[i,j] == 2, rownames(DF)[j], NA)
}
}
SD
RowNames ColumnNames
1 <NA> <NA>
2 <NA> <NA>
3 C A
4 A B
5 <NA> <NA>
6 <NA> <NA>
7 <NA> <NA>
8 B C
9 <NA> <NA>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338781.html
