Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >生成用户定义的R函数(或嵌套多个函数),将原始数据集为每个人的新数据格式

生成用户定义的R函数(或嵌套多个函数),将原始数据集为每个人的新数据格式
EN

Stack Overflow用户
提问于 2021-04-23 02:32:22
回答 1查看 27关注 0票数 0

在R中,我可能遇到了一个非常容易的问题,但是我在编写用户定义的函数方面缺乏经验,这于事无补。

示例数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
individual = c(1, 1, 1, 1, 2, 2, 2, 2), measure1 = c(40, 
70, 90, 100, 40, 70, 90, 100), measure2 = c(1.06, 0.7, 0.507, 
0.37, 0.9, 0.56, 0.412, 0.375)), class = "data.frame", row.names = c(NA, 
-8L))

我想做什么,

简而言之,我希望创建一个用户定义的函数,该函数可以执行以下操作:

lm(measure1~measure2, data)

  • 获取数据,子集数据使只剩下用于度量1和2的相关行。

  • 获取子集数据并为数据集中的每个个体创建新的数据。

  • 在每个新的数据基上创建一个线性模型,形式如下:

我的想法/我已经尝试过的首先是值得我澄清为什么我想要一个函数来做这件事。简单地说,我有大约10个相似的数据集。我想对所有数据集执行这些操作。我只需要创建一个大数据集并将它们组合起来,但是物流是有问题的。所以,我决定写一个函数会更容易。

Problem1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Filt.data<- function(x,y,z){
new.data<<-x[x$measure1 %in% c(y,z), ]
new.data
}

上面的代码工作得很好,允许我使用变量y和z输入任何数据"x“和子集(这是度量1的两个值)。这是一个很好的第一步,但这显然会为所有参与者生成一个新的数据数据( 1:i ),因此,我的下一步是在函数中嵌套一个for循环。我想出了以下几点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filt.data<- function(x,y,z){
for (i in 1:length(x$participant)){
x[x$measure1 %in% c(y,z), ]
}
}

这就是我所拥有的。在这一点上,让我感到困惑的是如何为每个参与者创建一个新的数据框架( 1:i是唯一命名的(即new.dat_1),其中"1“是我执行过的参与者(或类似的).Once的数目--我认为这一步可以简单地对数据执行线性模型作为列表吗?但是,我又遇到了同样的问题:如何创建一个变量来存储每个线性模型的结果?

我对R很陌生,不用那么频繁地使用。我已经尝试过查找类似的问题,但只是整个索引[我]符号只是把我搞砸了!所以,快速请求:如果有人觉得自己能够生成代码,他们还能添加一些注释吗?这将帮助我在未来能够再次做到这一点,并理解机制。

一如既往,感谢你们的英雄们,他们把时间花在了(1)读这个和(2)提供支持!

干杯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-23 02:43:15

这不是一个好的做法

  • 从函数内部写入全局环境。避免对每个assign.
  • Create使用<<-individual单独的数据格式。您应该使用list代替.

试试这种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Filt.data<- function(x,y,z) {
  dat <- subset(x, measure1 %in% c(y,z))
  lapply(split(dat, dat$individual), function(x) lm(measure1~measure2, x))
}

list_model <- Filt.data(df, 40, 70)
list_model

#$`1`

#Call:
#lm(formula = measure1 ~ measure2, data = x)

#Coefficients:
#(Intercept)     measure2  
#     128.33       -83.33  


#$`2`

#Call:
#lm(formula = measure1 ~ measure2, data = x)

#Coefficients:
#(Intercept)     measure2  
#     119.41       -88.24  

数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df <- data.frame(individual = c(1, 1, 1, 1, 2, 2, 2, 2),
                 measure1 = c(40, 70, 90, 100, 40, 70, 90, 100), 
                 measure2 = c(1.06, 0.7, 0.507, 0.37, 0.9, 0.56, 0.412, 0.375))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67228386

复制
相关文章
Python函数嵌套定义的洪荒之力
本文重点在于:Python允许函数的嵌套定义,这在有些情况下会带来很多方便。 感谢中国石油大学(华东)计算机与通信工程学院李昕老师提供问题。 假设有个列表,内容如下: >>> x = list(range(20)) >>> x [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 现在我们想得到一个新列表,其中每个值都是x中元素值加5,这很容易用Python内置函数map()实现,例如: >>> list(map(lam
Python小屋屋主
2018/04/16
1.1K0
函数的嵌套
# 输出:输出我在中国(大函数) 北京(小函数) def func_big(country): def func_small(city): print('我在%s,城市是%s' % (country, city)) func_small('北京') func_small('广州') func_big('中国') def func_big(country, bcity='北京'): def func_small(city): print
汪凡
2018/05/29
1.2K0
Python嵌套定义函数增强reduce()函数功能
2)functools标准库中的reduce()函数第一个参数可以是函数或lambda表达式,这个函数必须接收两个参数。
Python小屋屋主
2019/12/13
8970
Python嵌套定义函数增强reduce()函数功能
【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
是在重复度不受限制的情况下的选取结果 , 如果重复度受限制 , 就需要使用生成函数进行计算 ;
韩曙亮
2023/03/28
1.1K0
python基础之函数嵌套定义
  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代码的复用,还可以使代码更有条理性,增加代码的可靠性。下面我们来介绍一下python的函数嵌套定义相关内容。
jiankang666
2022/12/05
4860
python基础之函数嵌套定义
javascript事件监听中传递匿名函数(嵌套定义的命名函数)与命名函数的区别
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/51352229
空空云
2018/09/27
1.2K0
c语言定义函数和声明函数_C语言中用户定义函数的类型
There can be 4 different types of user-defined functions, they are:
全栈程序员站长
2022/06/28
2.6K0
函数嵌套
现在有一个需求,通过给一个函数传参即可求得某个圆的面积或者圆的周长。也就是说把一堆工具丢进工具箱内,之后想要获得某个工具,直接从工具箱中获取就行了。
py3study
2020/01/16
9760
函数嵌套
python-函数的对象、函数嵌套、名称
内存存储变量名与变量间的绑定关系的空间(存放变量名的空间),这个空间被称为名称空间。
py3study
2020/01/15
2.3K0
函数(五)(函数的嵌套与递归调用)
C语言的函数定义是互相平行和独立的,但函数的调用是可以嵌套的,也就是说,在调用一个函数的过程中,又去调用另外一个函数。
pigeon
2022/04/11
1.6K0
函数(五)(函数的嵌套与递归调用)
R」R 的函数
函数,其实就是一个黑箱子,一个封闭的计算结构体,对于用户来说,只需要关注输入和输出。函数在所有的编程语言中都有实现,主要的目的是方便进行模块化编程,代码维护等。
王诗翔呀
2020/07/03
1.3K0
lambda隐藏函数的嵌套
# 隐藏函数嵌套 f = (lambda a,b :a if a>b else b)(1000, 2000008) print((lambda a,g:a if a > g else g)(2000,f)) # lambda 推导式 l = [lambda x:x**i for i in range(4)] print(l[1](4))
汪凡
2018/05/29
1K0
R中的自定义函数function
函数语法 函数名<-function(parameters){ statemens return(expression)} printLine <- function () { print("--------------------------------------------"); } #函数的调用 printLine(); #错误:无参函数,有参调用 printLine("parameter"); printNLines <- function (n) { for(i in 1:n) {
Erin
2018/01/09
2.5K0
Python学习(一)函数定义、使用与嵌套
本文介绍了Python中函数定义、使用和嵌套,以及Python中self和init的含义和作用。
码科智能
2018/01/02
1.2K0
【组合数学】指数生成函数 ( 指数生成函数性质 | 指数生成函数求解多重集排列 )
将上述两个 指数生成函数 相乘 , 看做一个函数 , 可以展开成另外一个数列的级数形式 ,
韩曙亮
2023/03/28
6580
R语言自定义函数
R语言在使用过程中有些时候代码过长或者很多重复性的功能需要对代码的结构进行管理以及梳理。R语言具有自定义函数的功能,如果有些代码实现的功能具有重复性,那么就可以利用R语言自带的自定义函数体进行封装功能。最后,只需要每次调用的时候保证输入输出能够结构化的输入变量和结构化的输出计算结果。
一粒沙
2019/07/31
3K0
R语言自定义函数
Python嵌套函数与匿名函数
函数的嵌套调用是在"函数调用中再调用其他函数"。也就是说:函数嵌套允许在一个函数中调用另外一个函数。如下: name = "Forest" def change(): name = "Forest1" def change2(): # global name 如果声明了这句,下面的name改的是最外层的全局变层 name = "Forest2" #这句注释掉的话,则打印Forest1 print("第3层打印", name)
Yuou
2022/09/26
4930
R语言:自定义函数
在用R语言做各种事物时,用户自定义函数是不可或缺的。这期来讲讲如何自定义R的function。首先要介绍的是function的基本框架:
努力在北京混出人样
2019/02/18
1.4K0
用户自定义函数UDF
Hive支持的函数除了内置函数,允许编写用户自定义函数(User Define Function)来扩充函数的功能。
十里桃花舞丶
2021/09/10
2.8K0
用户自定义函数UDAF
Hive UDAF有两种实现方式,可以继承UDAF或者AbstractGenericUDAFResolver类,也可以实现GenericUDAFResolver2接口。 其中直接继承UDAF类,功能实现较为简单,但在运行时使用Hive反射机制,导致性能有损失。
十里桃花舞丶
2021/09/10
4390

相似问题

生成新列和新数据的用户定义函数。

11

将新列返回数据集的r函数

14

R为具有映射函数或循环的多个数据格式计算一个新列。

12

为多个数据集定义函数

10

在R中生成警告的用户定义函数

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文