全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
15425 8
2014-10-23
fun1 = function(x2,x1) rep(x1[1],x2[1])

v = NULL; for (i in 1:5) v = c(v,fun1(3,i))

结果为: 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5

如果抛弃for语句,改用sapply与fun1得到相同结果,那该怎么写?(前提:不能改写fun1函数,不能调换x2与x1在参数列表中的位置)
二维码

扫码加我 拉你入群

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

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

全部回复
2014-10-23 21:53:44
复制代码
二维码

扫码加我 拉你入群

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

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

2014-10-23 22:13:36
小朝 发表于 2014-10-23 21:53
误会了,你的方法是另写函数,或直接用rep。我想知道在只能用sapply 及fun1(不得改写)的情况下,如何写程序。其实我想知道的问题可以换一种表述:sapply可以对f(x,y)中的x位进行批量化的"广播",但如果我想针对y进行"广播"呢?难道只能定义f2 = function(y,x) f(x,y),之后再用sapply(…, f2, 某固定的x值)这种方法么?如果直接用sapply与f()的组合,可以实现对y位的广播么?
二维码

扫码加我 拉你入群

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

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

2014-10-23 22:22:28

as.vector(sapply(1:5, function(x) rep(x,each=3)))
二维码

扫码加我 拉你入群

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

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

2014-10-24 07:28:40
calsunny 发表于 2014-10-23 22:22
as.vector(sapply(1:5, function(x) rep(x,each=3)))
误会了,再次强调不要另写函数。只能用fun1,这种情况下能用sapply解决么?我只想知道这个。

rep的用法,其中each参数的用法,我是了解的。此处的fun1仅是个例子函数,重要的不是用其他方法重新实现fun1的具体功能,关键是sapply能否直接实现对函数f(x,y)中y位置的批量"广播"。这个意图我在楼上也已经说明。
二维码

扫码加我 拉你入群

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

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

2014-10-24 08:46:40
meishanjia1900 发表于 2014-10-24 07:28
误会了,再次强调不要另写函数。只能用fun1,这种情况下能用sapply解决么?我只想知道这个。

rep的用法, ...
c(sapply(1:5,fun1,x2=3))
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群