楼主: claudiehuang
13413 7

[问答] 求助,如何定位矩阵中数据的位置 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

47%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
9 点
信用等级
0 点
经验
1612 点
帖子
71
精华
0
在线时间
157 小时
注册时间
2017-10-25
最后登录
2021-4-17

楼主
claudiehuang 发表于 2018-5-30 13:53:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求助,如何在矩阵中定位指定值的位置并且返回其位置
1527659424(1).png
例如上图,我如何可以查到8,4,6 的位置并且返回为【3,6,7】
试过which,好像单独一个一个可以,但是对于几个数字构成的数据集就不行就不行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据集

沙发
zerofung 学生认证  发表于 2018-5-30 15:14:16
题目描述不太完整,矩阵中的位置不可能只有一个值,你是指在A列的位置?假如有重复值,你需要返回多个位置吗?其实你用which的思路是对的,如果你想多个一起,再加个lapply就好。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
claudiehuang 发表于 2018-5-30 15:45:14
zerofung 发表于 2018-5-30 15:14
题目描述不太完整,矩阵中的位置不可能只有一个值,你是指在A列的位置?假如有重复值,你需要返回多个位置吗 ...
谢谢,能具体一点吗,我就是只查找在A列的位置

板凳
rainningpoet 发表于 2018-5-30 16:22:51
library(dplyr)
data=data.frame(v1=c(4,6,7,8))
data$ind=rownames(data)
# find 6,7 return row 2,3
data%>%filter(v1 %in% c(6,7))%>%select(ind)
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
genglilin 发表于 2018-5-31 14:55:51
循环函数:
lapply:用途,有一个对象列表,遍历这个对象列表,对列表的每个元素运用函数
sapply:是lapply的一个变体,简化了lapply()的结果
apply:对数组进行行或列运算的函数,对矩阵和高维数组做总结
tapply:table apply()的缩写,将函数应用于向量的子集
mapply:是lapply的多变量版本
split:不对对象做任何操作,将对象分成子块,和lapply,sapply结合使用

地板
沸腾的酸汤鱼 发表于 2018-6-18 23:00:23
wei_zhi<-function(x,data){
s<-c(t(data))
n<-dim(data)
m<-which(s==x)
row<-m%/%n[2]+1
col<-m-m%/%n[2]*n[2]
list(row=row,col=col)}

7
jiangbeilu 学生认证  发表于 2018-6-19 14:43:09
  1. set.seed(23)
  2. mat <- matrix(sample(1:5,20,replace=TRUE),ncol=2)
  3. mat
  4. do.call('rbind',sapply(c(2,3,4),function(x) which(mat==x,arr.ind=T)))
复制代码


最后的结果再去一下重,就可以得到具体是哪一行,哪一列有这些数据了。
which里面是有一个参数arr.ind参数,设置好了,就可以显示是哪一行哪一列数据相等了。

8
maths_hjxk 发表于 2020-6-23 11:06:02
不好意思发错地了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 20:12