楼主: xucaifeng66
4719 6

[问答] 不想用循环,如何用*apply实现同样的目的 [推广有奖]

  • 0关注
  • 2粉丝

已卖:608份资源

讲师

44%

还不是VIP/贵宾

-

威望
0
论坛币
3633 个
通用积分
26.5666
学术水平
11 点
热心指数
20 点
信用等级
8 点
经验
19481 点
帖子
298
精华
0
在线时间
591 小时
注册时间
2014-5-11
最后登录
2021-1-29

楼主
xucaifeng66 发表于 2015-1-7 10:55:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教下:

有一组数据,比如

a <- c(1, 2, 3, 2, 3, 2, 3, 4, 5, 4, 3, 4)
names(a) <- c('x', 'x', 'x', 'x', 'x', 'x', 'y', 'y', 'y', 'y', 'z', 'z')


那么,我想将a变成一个矩阵, 是的名字相同的数据处于同一列下。


不用循环,用*apply语句应该怎么才能比较快的实现呢???

谢谢

二维码

扫码加我 拉你入群

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

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

关键词:apply appl App 如何用 如何

沙发
ydb8848 发表于 2015-1-7 10:59:00

藤椅
Actual_° 在职认证  发表于 2015-1-7 11:05:26
虽然不太懂、但是给你踩踩

板凳
望路人 发表于 2015-1-7 12:02:21
变成一个矩阵?矩阵要求每一列的长度相同,你这xyz的长度不一样,没法变成矩阵。或者你变成矩阵是为了啥目的

报纸
xucaifeng66 发表于 2015-1-7 14:05:04
望路人 发表于 2015-1-7 12:02
变成一个矩阵?矩阵要求每一列的长度相同,你这xyz的长度不一样,没法变成矩阵。或者你变成矩阵是为了啥目的 ...
长度不一样的可以用NA代替,变成矩阵一是函数的要求,而是变成矩阵求平均数之类的方便,看起来也方便

地板
yywan0913 在职认证  发表于 2015-1-7 14:23:52
  1. sapply(unique(names(a)),function(x) c(a[names(a)==x],rep(NA,max(table(names(a)))-length(a[names(a)==x]))))
复制代码
已有 2 人评分经验 论坛币 学术水平 收起 理由
xucaifeng66 + 5 + 2 精彩帖子
李会超 + 40 热心帮助其他会员

总评分: 经验 + 40  论坛币 + 5  学术水平 + 2   查看全部评分

7
xucaifeng66 发表于 2015-1-7 15:29:21
yywan0913 发表于 2015-1-7 14:23
明白了,看来主要还是写function的功底,谢谢

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

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