R 循环内下标超出边界

R 循环内下标超出边界,r,R,我是R新手,遇到了一个问题。我试图根据另一个数据帧(“razdeljena1”)中的数据填充一个矩阵(“m”)——所有列和行名称或“m”都与“razdeljena1”中第一列和第二列中的名称匹配 为此,我创建了一个while循环,它将读取每一行,提取必要的信息并将其写入矩阵 a <- 1 while (a <379){ beseda1 <- razdeljena1[a,1] beseda2 <- razdeljena1[a,2] relat <- raz

我是R新手,遇到了一个问题。我试图根据另一个数据帧(“razdeljena1”)中的数据填充一个矩阵(“m”)——所有列和行名称或“m”都与“razdeljena1”中第一列和第二列中的名称匹配

为此,我创建了一个while循环,它将读取每一行,提取必要的信息并将其写入矩阵

a <- 1
while (a <379){
  beseda1 <- razdeljena1[a,1]
  beseda2 <- razdeljena1[a,2]
  relat <- razdeljena1[a,3]

  m[beseda1, beseda2] <- relat
  m[beseda2, beseda1] <- relat

  a <- a+1
}

我还试图看看这是否是唯一一对会导致问题的(通过使用大于9的数字启动while循环),并在一些迭代后得到相同的错误。

R支持通过包含dim名称的两列字符矩阵进行赋值索引;不需要循环。只需这样做:

 m[ razdeljena1[ , 1:2] ] <- razdeljena1[ , 3]
m[razdeljena1[,1:2]]m[razdeljena1[,1:2]]m
这是一个很好的例子
PES钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠
马卡那那那那那那那那那那那那那那那那那
纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳纳
贺拉娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜娜
斯特罗姆钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠钠
#剪掉了剩下的几行。

我无法运行您的示例,for(p%>%select(Pair))的
行给出了一个错误
未找到对象“p”
。还要注意,您的循环是在数字上循环,而不是在字符串上循环,因此如果9次迭代有效,那么当
a
10
时,它可能会中断。
razdeljena1[10,1]
有效吗?那么
razdeljena1[10,2]
razdeljena1[10,3]
呢?什么是dim(razdeljena)
?对象p是一个包含无法共享数据的表。我只取一列(“对”),其格式为“PERO-POSTEĽ”-并将其拆分,以便在单独的列中获得“PERO”“POSTEL”。同样的事情也适用于rel_mat,只是在这里我不需要更改格式,我只需将其添加到数据帧“razdeljena”中,并获得“razdeljena1”,您建议的所有示例都可以使用正确的响应。dim(razdeljena)=378 3我还补充说,我试图更改矩阵的行中报告了错误:
中的错误[这会产生一个错误:
中的错误。[您在
razdeljena1[,1:2]]
中有一个值,
dimnames(m)[[1]]
。您需要清理数据。运行
unique(razdeljena1[,1:2])[哪个(!unique(razdeljena1[,1:2]])%in%dimnames(m)[[1]]]]]]
来查找拼写错误的dimname。问题确实出在dimnames(m)中。这是由于不同的编码,但我设法修复了它。非常感谢!
a <- 1
while (a <379){
  beseda1 <- razdeljena1[a,1]
  beseda2 <- razdeljena1[a,2]
  relat <- razdeljena1[a,3]

  m[beseda1, beseda2] <- relat
  m[beseda2, beseda1] <- relat

  a <- a+1
}
beseda1 <- "PERO"
beseda2 <- "POSTEĽ"

m[beseda1, beseda2] <- 1
m[beseda2, beseda1] <- 1
 m[ razdeljena1[ , 1:2] ] <- razdeljena1[ , 3]
> m [ razdeljena1[ , 1:2] ] <- razdeljena1[,3]
> m
         PES MAčKA VTÁK HORA STROM RIEKA SLNKO MÄSO SYR VODA CHLIEB KLADIVO METLA PERO NÔŽ
PES      NA  NA    NA   NA   NA    NA    NA    NA   NA  NA   NA     NA      NA    NA   NA 
MAčKA    NA  NA    NA   NA   NA    NA    NA    NA   NA  NA   NA     NA      NA    NA   NA 
VTÁK     NA  NA    NA   NA   NA    NA    NA    NA   NA  NA   NA     NA      NA    NA   NA 
HORA     NA  NA    NA   NA   NA    NA    NA    NA   NA  "1"  NA     NA      NA    NA   NA 
STROM    NA  NA    NA   NA   NA    NA    NA    NA   NA  "1"  NA     NA      NA    NA   NA 
#snipped remaining rows.