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