簡體   English   中英

如何為R中的有序對制作矩陣?

[英]How to make a matrix for ordered pairs in R?

我想在R中創建一個有序對矩陣,即矩陣中的每個單元格都將包含點(a,b)。 我已經試過這段代碼:

calc_z<-function(results1){
#INPUT: Paired scores table
#OUTPUT: z score of a hypergeometric distribution as indicated in figure 1
a <- nrow(results1)
b <- ncol(results1)
results2 <- matrix(nrow = a ,ncol = b)
for (j in 1:b) {
 for (i in seq(1, a-3, 2)){
  results2[i, j] <- c(results1[i, j], results1[i+1, j])
  results2[i+1, j] <- c(results1[i+1, j], results1[i+2, j])
 }
results2[a-1, j] <- c(results1[a-1, j], results1[a, j])
results2[a, j] <- c(results1[a, j], results1[1, j])
}
`
`in my work: a=10, b=99`

該函數采用兩個附近的變量並將它們綁定到點(a,b)(最后一行是最后一個數字)。 當我嘗試運行代碼時,我收到一條消息:

Error in results2[i, j] <- c(results1[i, j], results1[i + 1, j]) : number of 
items to replace is not a multiple of replacement length

有什么問題以及如何解決?

加成: 這是數據,我想參加附近的每場比賽(例如第一和第二),並使其成為有序對。我考慮過求和,但(0,1)和(1,0)之間有區別,因此我需要將其作為有序對放置。

這是數據,我想參加附近的每場比賽(例如第一和第二),並使其成為有序對。 我考慮過求和,但(0,1)和(1,0)之間有區別,因此我需要將其作為有序對放置。

如果要在每個單元格中放置兩個數字,則可以執行以下其中一項以矩陣1,1元素為例:

# test input
x <- y <- 3

# character
mat1 <- matrix(nrow = 4, ncol = 7)
mat1[1, 1] <- paste(x, y)

# complex
mat2 <- matrix(nrow = 4, ncol = 7)
mat2[1, 1] <- x + 1i * y

# list
mat3 <- matrix(list(), nrow = 4, ncol = 7)
mat3[[1, 1]] <- c(x, y)

# numeric - encode assuming we know that largest element is < 1000
# and all elements are nonnegative
mat4 <- matrix(nrow = 4, ncol = 7)
mat4[1, 1] <- 1000 * x + y

您要按列前進,對吧? 確保安裝dplyr軟件包並嘗試以下操作:

output <- apply(results1, 2L, function(column) {
  lead1 <- dplyr::lead(column, 1L, default=NULL)
  pairs <- paste0("(", column[-length(column)], ",", lead1, ")")
  # return
  pairs
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM