两个例题 :例题一涉及6个问题,使用的数据集为R语言自带的fertil2。例题二涉及3个问题,使用的数据集为stata格式的eitc.dta。 本文介绍例题二。例题一见上篇。
使用数据集eitc.dta,因变量为children,educ为自变量(是否为内生在问题1-6中会讨论),还有其他自变量如age等。
以上是我自己做的答案,也不知道正确答案如何,如果有会的同学来点评帮助一下,我将感激不尽。共勉。
最简单但计算量最大的是泰勒公式:e=1+1/1!+1/2!+1/3!+1/4!+...
下面是求e的R语言函数:
e_fun <- function(n) {etemp <- 1
ni <- 1L
for (i in 1:n) {
etemp <- etemp + 1 / ni
ni <- ni * (i + 1)
}
return(etemp)
}
不过你题目中要求的是求到精度为0.00001就停止,所以可以采用repeat循环:
i <- 1Lni <- 1L
etemp <- 1
repeat {
etemp1 <- etemp
etemp <- etemp + 1 / ni
ni <- ni * (i + 1)
i <- i + 1
if (etemp - etemp1 < 0.00001) break
}
i
etemp
在最后可以看到,求到i=10时,精度就已经达到要求了。
//直接使用数组保存#include <stdio.h>
#define size 10
int main()
{
char name[size][10]
int num[size],id[size],i=0
while(i++<3)
scanf("%d%s%d",&id[i-1],name[i-1],&num[i-1])
printf("打印输入结果:\n")
i=0
while(i++<3)
printf("%d %s %d\n",id[i-1],name[i-1],num[i-1])
return 0
} //用结构保存
#include <stdio.h>
#define size 10
typedef struct alist
{
int id
char name[10]
int num
}ALIST
int main()
{
ALIST al[size]
int i=0
while(i++<3)
scanf("%d%s%d",&al[i-1].id,al[i-1].name,&al[i-1].num)
printf("打印输入结果:\n")
i=0
while(i++<3)
printf("%d %s %d\n",al[i-1].id,al[i-1].name,al[i-1].num)
return 0
}
当然你也可以把结构做成链表,用next链表指针,遍历数据,我这就不演示了。