楼主: juicejune
1190 5

[问答] 新手求助 R语言 关于循环的编写 [推广有奖]

  • 3关注
  • 0粉丝

已卖:8份资源

博士生

38%

还不是VIP/贵宾

-

威望
0
论坛币
3794 个
通用积分
46.4301
学术水平
29 点
热心指数
29 点
信用等级
29 点
经验
1062 点
帖子
118
精华
0
在线时间
426 小时
注册时间
2018-4-16
最后登录
2025-9-29

楼主
juicejune 发表于 2021-5-7 19:39:52 |AI写论文
30论坛币
大概与有循环有关吧

问题描述:1000个名称有顺序的数据集,如b1zx0001,b1zx0002,...,b1zx1000,需要对这些数据集执行相同的操作,产生同样有序名称的数据集(如a1zx0001,a1zx0002,...,a1zx1000),在R 中该如何进行编程,调用一批数据集?


PS:对R还有一个疑问,R中是否有与sas macro类似性质的操作



最佳答案

owenqi 查看完整内容

感觉你说的SAS的macro就相当于R中的函数,给输入就有相应的输出,命名什么的可以最后再做。
关键词:R语言 Macro 数据集 Mac acr

回帖推荐

龙熏风 发表于5楼  查看完整内容

我觉得你可能需要先考虑下数据集的大小,生成数据的大小和你可以使用的内存 如果数据较大,最好一次载入一次循环所需要的数据,然后把结果输出到硬盘,并把计算过程中产生的数据删除 看你的数据文件格式,选择相应函数载入,1000个文件,可以list.files() 如果数据较小,放入list中,正则法则选取相应的数据集组成list,然后lapply,最后命名

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

感觉你说的SAS的macro就相当于R中的函数,给输入就有相应的输出,命名什么的可以最后再做。

沙发
owenqi 在职认证  学生认证  发表于 2021-5-7 19:39:53
感觉你说的SAS的macro就相当于R中的函数,给输入就有相应的输出,命名什么的可以最后再做。
  1. neg_sq <- function(df){
  2.   df[,1] <- -df[,1]
  3.   df[,2] <- df[,2]^2
  4.   return(df)
  5. }

  6. iter <- 1000
  7. lst <- list()
  8. for(i in 1:iter)
  9.   lst[[i]] <- data.frame(x = runif(3), y = rnorm(3))
  10. names(lst) <- sprintf("b1zx_%04d", 1:iter)

  11. lst2 <- lapply(lst, neg_sq)
  12. names(lst2) <- sprintf("a1zx_%04d", 1:iter)
复制代码

藤椅
juicejune 发表于 2021-5-7 20:50:20
或者是将1000个数据集,按顺序放进一个list中,然后循环,每次按顺序调用一个进行操作,生成新数据集到另外一个list中?不知道这种可不可行,如何编写

板凳
juicejune 发表于 2021-5-8 06:21:55
juicejune 发表于 2021-5-7 20:50
或者是将1000个数据集,按顺序放进一个list中,然后循环,每次按顺序调用一个进行操作,生成新数据集到另外 ...
将个数据集放进一个list中目前看起来可行,还有的问题就是,主楼所说的是否有sas macro 类似的方式,目前的循环中有i=1:1000,希望调取某一次i中的生成的数据集(如b1zx1000ri),拼接出的字符串无法调动名称一致的数据集,所以有些困惑,希望能够像在sas中的宏变量那样可以明确指定含有i的数据集,不知有无解决办法

报纸
龙熏风 发表于 2021-5-8 09:27:04
我觉得你可能需要先考虑下数据集的大小,生成数据的大小和你可以使用的内存

如果数据较大,最好一次载入一次循环所需要的数据,然后把结果输出到硬盘,并把计算过程中产生的数据删除
看你的数据文件格式,选择相应函数载入,1000个文件,可以list.files()
如果数据较小,放入list中,正则法则选取相应的数据集组成list,然后lapply,最后命名
  1. dataList -> lapply(grep("^b1zx\\d{4}", ls()), get)
  2. result ->lapply(dataList, yourFunction, otherArgs)
  3. names(result) -> paste0("a1zx", seq(1000))
复制代码

已有 1 人评分论坛币 收起 理由
juicejune + 5 精彩帖子

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

地板
juicejune 发表于 2021-5-8 12:27:35
感谢两位提供的思路,先试着探索一下

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

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