楼主: juno嗅嗅
4851 5

[问答] 新手 R语言 sapply对于两个变量如何操作 [推广有奖]

  • 1关注
  • 0粉丝

本科生

45%

还不是VIP/贵宾

-

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

楼主
juno嗅嗅 发表于 2016-9-2 19:44:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我编写了一个这样的函数,主要目的是做除法:
division_func <- function(x,y) {
if ( !is.na(x)  && !is.na(y) ) {
       z <- x/y
    } else {
          z =0
             }
return(z)
}
有一个data数据 集,包含 a,b两列,现要用a列数据除以b列数据得到一个新列,但下面的操作报错
data2 <- with(data, sapply( c(a, b), division_func(a, b),USE.NAME = F))  
此时,报错 显示:
Error in match.fun(FUN) :
  'division_func(a, b)'不是函数,也不是字符,也不是符號

但是,当我单独调用函数dividion_func(3,2)是可用的呀,这是为什么呢?
我应该怎么在数据框中调用这个函数呢?
二维码

扫码加我 拉你入群

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

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

关键词:apply 如何操作 appl R语言 App 如何 使用sapply函数

沙发
czrdiao 发表于 2016-9-2 20:28:43 来自手机
mapply

藤椅
Baby-Zhao 发表于 2016-9-2 20:31:20
sapply里的那个函数你写 division_func 不用写后边的(a,b)

板凳
ntsean 发表于 2016-9-2 21:02:49
  1. no need sapply

  2. z <- x/y
  3. z <- ifelse(is.na(z), 0, z)
复制代码

报纸
juno嗅嗅 发表于 2016-9-3 07:03:42
czrdiao 发表于 2016-9-2 20:28
mapply
我用mapply试了下,可以用
data$c <- with(data, mapply(division_func, a, b))
谢谢!

地板
juno嗅嗅 发表于 2016-9-3 07:08:19
ntsean 发表于 2016-9-2 21:02
这样我之前有试过,是报错的,报错大概说的是 变量的length >1,不知道是为什么. 我觉得除法是适合向量的啊,为什么会报错呢?

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

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