楼主: 云殇
891 4

[问答] 想问一下R语言矩阵的问题 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

96%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
7.4002
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2990 点
帖子
47
精华
0
在线时间
345 小时
注册时间
2011-7-29
最后登录
2024-1-10

15论坛币
现在碰到一个问题

X是一个vector,长度为100
Y是一个matrix,由很多1~100的整数构成

想得到一个新的矩阵Z,行数和列数都和Y相同,每一个值都是Y元素在X中的值,可以理解为Z=X[Y]

不想用for~有什么比较好的方法咩~~求助!


关键词:R语言 Vector matrix VEC Mat matrix

回帖推荐

kaifengedu 发表于2楼  查看完整内容

沙发
kaifengedu 发表于 2017-2-27 16:16:00 |只看作者 |坛友微信交流群
  1. x <- 101:200
  2. Y <- matrix(1:20,nrow = 2, ncol = 10)
  3. Y
  4. NRow <- dim(Y)[1]
  5. NCol <- dim(Y)[2]
  6. temp <- x[as.vector(Y)]
  7. Z <- matrix(temp,nrow = NRow, ncol = NCol)
  8. Z
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
云殇 + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
wuyi0614 学生认证  发表于 2017-2-27 16:35:22 |只看作者 |坛友微信交流群
不知道是不是我没怎么理解,如果Y中的元素不全是在X中的话,Z的行数和列数就不能等于Y;换句话说,如果Y和Z一样大,同时Z的元素又来自于Y,楼主是想排一下序?
如果Y中的元素有的不在X中,那个缺值可以用0替换么?如果可以的话,可以尝试以下方法:
x = c(1,4,5,1,2,3,8,9,11,15,17)
y = matrix(1:25,5,5)
z = matrix(y%in%x,nrow(y),ncol(y))
z[z == T] = 1
z = z*y
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
云殇 + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

板凳
云殇 发表于 2017-2-27 16:42:55 |只看作者 |坛友微信交流群
wuyi0614 发表于 2017-2-27 16:35
不知道是不是我没怎么理解,如果Y中的元素不全是在X中的话,Z的行数和列数就不能等于Y;换句话说,如果Y和Z ...
啊不是这样的……我表述问题
举个例子
X<-c(1.5, 2.5, 3.5)是个长度为三的向量
然后Y是个2*2的矩阵,Y每个元素都在1:length(X)之间且是个整数
假设Y<-matrix(c(1,3,2,1),2,2)
那么我想要得到一个新的矩阵Z
Z<-matrix(c(X[1],X[3],X[2],X[1]),2,2)

不知道可以怎么实现~~~求教

使用道具

报纸
cheetahfly 在职认证  发表于 2017-2-27 16:48:13 |只看作者 |坛友微信交流群
你自己已经解决了
z <- matrix(x[y], ncol = ncol(y))
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
云殇 + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-7 01:39