楼主: Geo_not_sci
1436 5

[问答] 自编函数返回问题 [推广有奖]

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
82 点
帖子
6
精华
0
在线时间
9 小时
注册时间
2020-9-9
最后登录
2020-11-9

楼主
Geo_not_sci 发表于 2020-9-10 18:06:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
latzone <- function(stg, lat1, lat2){

   wq <- get(paste("TS", stg ,sep = ""))

   if(lat1 == -15 & lat2 == 15){
  assign(paste("pltd", lat2, stg, "-" , sep = ""),
         subset(wq, paleolat > lat1 & paleolat < lat2) )
  }else{
  assign(paste("pltd", lat2, stg, "-" , sep = ""),
           rbind(subset(wq, paleolat > lat1 & paleolat < lat2),
                 subset(wq, paleolat > -lat2 & paleolat < -lat1)))
  }
}

这是我编写的函数,其中wq <- get(paste("TS", stg ,sep = ""))都是数据框,目的是按照lat1和lat2的范围来进行子集划,并得到子集划后的数据框。问题是,我使用以上函数进行运算,并无子集划后数据框的一个返回值,请问我改如何修改我的代码?感谢!

二维码

扫码加我 拉你入群

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

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

关键词:Subset Pale Zone subs LAT R语言;R语言分组计算;自编函数;函数调用;循环语句

回帖推荐

katymeala 发表于5楼  查看完整内容

ssign(paste("pltd", lat2, stg, "-" , sep = ""), rbind(subset(wq, paleolat > lat1 & paleolat < lat2), subset(wq, paleolat > -lat2 & paleolat < -lat1)), envir = .GlobalEnv)

沙发
卫队000 在职认证  发表于 2020-9-10 22:28:38
results <-  if(lat1 == -15 & lat2 == 15){
  assign(paste("pltd", lat2, stg, "-" , sep = ""),
         subset(wq, paleolat > lat1 & paleolat < lat2) )
  }else{
  assign(paste("pltd", lat2, stg, "-" , sep = ""),
           rbind(subset(wq, paleolat > lat1 & paleolat < lat2),
                 subset(wq, paleolat > -lat2 & paleolat < -lat1)))

return(results)
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
crystal8832 + 10 + 10 + 3 + 3 + 3 热心帮助其他会员

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

藤椅
Geo_not_sci 发表于 2020-9-11 11:54:38
卫队000 发表于 2020-9-10 22:28
results  lat1 & paleolat < lat2) )
  }else{
  assign(paste("pltd", lat2, stg, "-" , sep = ""),
感谢! 进一步追问:如何能让其出现在Global Environment的Data里面?而不是控制台

板凳
Geo_not_sci 发表于 2020-9-11 12:46:42
问题已经解决: 自编函数结合 for 循环 实现了我的目的。代码如下:
######导出“子集化之后”的文件######
latzone <- function(stg, lat1, lat2){
  
  wq <- get(paste("TS", stg ,sep = ""))
  
  results <- if(lat1 == -15 & lat2 == 15){
    subset(wq, paleolat > lat1 & paleolat < lat2)
  }else{
    rbind(subset(wq, paleolat > lat1 & paleolat < lat2),
          subset(wq, paleolat > -lat2 & paleolat < -lat1))
   
  }
  return(results)
}


for (i in 17:24) {
  
  for (lat1 in c(-15,15,30,45)) {
   
    for (lat2 in c(15,30,45,90)) {
      if (lat2-lat1 == 30 | lat2-lat1==15 | lat2-lat1==45){
        
        assign(paste("pltd", i,  lat1, lat2,  sep = ""),latzone(stg = i, lat1, lat2))
      }
      
    }
   
  }
  
}

报纸
katymeala 发表于 2020-9-12 12:47:07
ssign(paste("pltd", lat2, stg, "-" , sep = ""),
           rbind(subset(wq, paleolat > lat1 & paleolat < lat2),
                 subset(wq, paleolat > -lat2 & paleolat < -lat1)), envir = .GlobalEnv)

地板
Geo_not_sci 发表于 2020-9-12 13:48:14
katymeala 发表于 2020-9-12 12:47
ssign(paste("pltd", lat2, stg, "-" , sep = ""),
           rbind(subset(wq, paleolat > lat1 & paleo ...
感谢,我学到了很多

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

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