R 创建由返回向量的自定义函数填充的数据帧
我有下面的代码,我想做的是填充一个数据帧。每一行都应该从自定义函数rX返回(它返回一个包含3个数字的向量) 我想出了两种方法来实现这一点,但它们都感觉有点像是变通办法,我想知道是否有人有更好的建议 方法1涉及循环每次迭代,将结果存储在临时变量中,然后将其放置在数据帧中的正确位置 第二种方法是rbinds入数据,但我留下了一个空白行,需要在之后去掉它R 创建由返回向量的自定义函数填充的数据帧,r,dataframe,R,Dataframe,我有下面的代码,我想做的是填充一个数据帧。每一行都应该从自定义函数rX返回(它返回一个包含3个数字的向量) 我想出了两种方法来实现这一点,但它们都感觉有点像是变通办法,我想知道是否有人有更好的建议 方法1涉及循环每次迭代,将结果存储在临时变量中,然后将其放置在数据帧中的正确位置 第二种方法是rbinds入数据,但我留下了一个空白行,需要在之后去掉它 n=500 ff<-c(0.2,0.3,0.5,0.25) rX<-function(ff){ #generate data
n=500
ff<-c(0.2,0.3,0.5,0.25)
rX<-function(ff){
#generate data frame to hold set selections
rands<-runif(3)
s<-rep(0,3)
for(x in 1:3){
#generate probabalities from FF
probs<-cumsum(ff/sum(ff))
#select first fracture set
s[x]<-min(which(probs>=rands[x]))
#get rid of set and recalc
s[x]
ff[s[x]]<-0
}
rx<-s
}
n=500
ff考虑到您的rX
功能,我会像.data.frame(t(replicate(10,rX(ff)))一样执行。提供更现实的rX
,以获得更稳健的解决方案。请注意,在R中使用矩阵要快得多。因此,除非绝对必要,否则不要转换为数据帧。为此,您能否详细介绍一下提供更真实的rX?我将编辑帖子,以反映rX要使用的内容replicate
,因为rX
不接受任何输入。提供接收输入的rX
示例,并指定如何将这些输入传递到rX
。
#way 1
df_sets<-data.frame(s1=rep(0,n),s2=rep(0,n),s3=rep(0,n))
for (i in 1:n){
a<-rX(ff)
df_sets$s1[i]<-a[1]
df_sets$s2[i]<-a[2]
df_sets$s3[i]<-a[3]
}
head(df_sets)
#way 2
df_sets<-data.frame(s1=0,s2=0,s3=0)
for (i in 1:n){
a<-rX(ff)
df_sets<-rbind(df_sets,a)
}
df_sets<-df_sets[-1,]
head(df_sets)