楼主: 菩提镜
1290 1

[问答] R语言求教:如何用lapply将列表元素位数补齐 [推广有奖]

  • 2关注
  • 0粉丝

博士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
31.3330
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
31819 点
帖子
28
精华
0
在线时间
497 小时
注册时间
2012-1-13
最后登录
2024-12-11

楼主
菩提镜 发表于 2021-5-4 15:34:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
列表:list<- list(x = matrix(3:11, 3), y = matrix(1:12, nrow = 4))
        如何用lapply将每个元素下第三列一位数前置用0 ,sprintf("%02d",V3) 补齐为两位数,且输出仍为两个矩阵。
二维码

扫码加我 拉你入群

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

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

关键词:lapply apply appl 如何用 R语言

沙发
乐天天12300 发表于 2021-5-4 17:23:36
  1. mylist <- list(x = matrix(3:11, 3), y = matrix(1:12, nrow = 4))

  2. myfun <- function(x) {
  3.   x[, 3] <- sprintf("%02d", x[, 3])
  4.   x
  5. }

  6. # 这种会改变原始对象的类型,使他变成一个有字符矩阵组成的列表,不能进行后续矩阵运算
  7. lapply(mylist, myfun)

  8. # 可以使用s3方法,写一个print函数,仅改变他输出的样子,不改变他本身类型
  9. class(mylist) <- "test"


  10. print.test <- function(x) {
  11.   y <- list()
  12.   for (i in seq_along(x)) {
  13.     x[[i]][, 3] <- sprintf("%02d", x[[i]][, 3])
  14.     y[[i]] <- x[[i]]
  15.   }
  16.   print(y)
  17. }

  18. mylist
  19. mylist$x
  20. mylist$y
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-30 10:37