我需要使用公式将值插入R中的矩阵。每次这样做,都会出现错误“下标超出范围”。
编辑:这是我尝试的结果
例如:
matrix["60","70"] = 1
在矩阵中名为1
的行"60"
的行中放入"70"
的值{p}
matrix[lakes[k],lakes2[k]] = 1
给我错误
我已经仔细检查过,lakes[k]
和lakes2[k]
分别给了我60
和70
。我曾尝试将""
和lakes[k]
放在lakes2[k]
周围。
> k=2
> lakes[k]
[1] 70
> lakes2[k]
[1] 60
> lakes_matrix[lakes[k],lakes2[k]] = 1
Error in `[<-`(`*tmp*`, lakes[k], lakes2[k], value = 1) :
subscript out of bounds
> lakes_matrix["70","60"] =1
> lakes_matrix
25 63 1567 40 50 60 70 80
25 NA NA NA NA NA NA NA NA
63 NA NA NA NA NA NA NA NA
1567 NA NA NA NA NA NA NA NA
40 NA NA NA NA NA NA NA NA
50 NA NA NA NA NA NA NA NA
60 NA NA NA NA NA NA NA NA
70 NA NA NA NA NA 1 NA NA
80 NA NA NA NA NA NA NA NA
答案 0 :(得分:2)
当您使用括号表示法子集时,R解释命令的方式将根据您传递的类型为character
还是类型为numeric
而有所不同。在第一个示例中,您传入了两个character
lakes_matrix["70","60"]
这将返回命名 "70"
行和命名 "60"
列的单元格值。这样,它会在rownames(lakes_matrix)
和colnames(lakes_matrix)
中搜索匹配项
但是,在第二个示例中,向量lakes
具有类型numeric
的值(您可以看到,因为它们打印时在其周围没有引号)。所以这两个语句是相同的
lakes_matrix[lakes[k],lakes2[k]]
lakes_matrix[70, 60]
提供数字时,按索引表示R个子集。因此,它尝试返回第70行和第60列的值。由于lakes_matrix
只有8行8列,因此该值不存在,并且会返回subscript out of bounds
错误。
您可以使用as.character
将lakes
的值更改为键入character
。