r语言编程艺术中第三章扩展案例中找图中距离最近的一对端点的代码中17

r语言编程艺术中第三章扩展案例中找图中距离最近的一对端点的代码中17行是什么意思呢?为什么对i赋值x【length(x)】?那x【i】不就是每行最末尾那个数据了么?不懂... r语言编程艺术中第三章扩展案例中找图中距离最近的一对端点的代码中17行是什么意思呢?为什么对i赋值x【length(x)】?那x【i】不就是每行最末尾那个数据了么?不懂 展开
 我来答
果子冻五号
2017-11-28
知道答主
回答量:2
采纳率:0%
帮助的人:1769
展开全部
扩展案例4,找到图中距离最近的一对端点:
第i行第j列表示城市i和城市j的距离,x[i,j]=x[j,i]
矩阵式对称的,且我们的目标使找到非0的最小值,并返回其所有的位置。
既然是对称的,只需要计算上三角(此例用上三角)或下三角的每一行的最小值,再找到这些最小值的那一个。
q<-matrix(c(0,12,13,8,20,12,0,15,28,88,13,15,0,6,9,8,28,6,0,33,20,88,9,33,0),
nrow=5,ncol=5)
mind<-function(d){
n<-nrow(d)
dd<-cbind(d,1:n)#为原矩阵增加一列,为相应的行号
wins<-apply(dd[-n,],1,imin)#dd[-n,],因为无需计算最后一行的最小值,上三角中值为0
i<-which.min(wins[2,])
#wins第1行为每行上三角最小值的列号,第2行为每行上三角的最小值
#在wins矩阵第2列找出最小值的位置,即为该最小值在原矩阵中的行号
j<-wins[1,i]
#j为wins矩阵中最小的值对应的k
#j为原矩阵的列号
return(c(d[i,j],i,j))
}
imin<-function(x){
lx<-length(x)
i<-x[lx]#注意此处返回的是行号,每一行的最后一个数字为对应的行号
j<-which.min(x[(i+1):(lx-1)])
#lx-1是为了不将行号值纳入计算,(i+1):(lx-1)为对应行i的上三角位置
#j取了该行上三角中最小值的位置
#举例,q第一行(i=1)的上三角值为12,13,8,20.那么最小值为8,j=3,k=i+j=4,为原矩阵中该行最小值的实际位置
k<-i+j
return(c(k,x[k]))
}
#imin主要应用在apply中,要考虑到其应用的是一个什么样子的矩阵
mind(q)
#[1] 6 3 4,最小的值是6,位于第3行第4列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
wr...2@163.com
推荐于2017-11-28 · TA获得超过212个赞
知道答主
回答量:286
采纳率:0%
帮助的人:89.1万
展开全部
dui <- function(data) data[row(data)==col(data)]
xj <- matrix(runif(16),nrow=4)
dui(xj)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式