R 创建一个随机选择行-循环方式的新数据帧
问题:R 创建一个随机选择行-循环方式的新数据帧,r,function,dataframe,subset,random-sample,R,Function,Dataframe,Subset,Random Sample,问题: set.seed[25] beta<-data.frame() net.row<-function(n=50){ netcol=sample(1:nrow(hlth),size=n ,replace=TRUE) rNames <- row.names(hlth) subset(hlth,rNames%in%netrow,select=c(25:49)) colMeans(s1,na.rm=TRUE,dims=1) } beta$net.row=repli
set.seed[25]
beta<-data.frame()
net.row<-function(n=50){
netcol=sample(1:nrow(hlth),size=n ,replace=TRUE)
rNames <- row.names(hlth)
subset(hlth,rNames%in%netrow,select=c(25:49))
colMeans(s1,na.rm=TRUE,dims=1)
}
beta$net.row=replicate(1000,net.row()); net.row
我有一个data.frame(hlth),它由49个向量组成——数字(25:49)和因子(1:24)的混合体。我尝试随机选择50行,然后仅计算数字列的列平均值(删除其他值),然后将随机行平均值放入新的data.frame(beta)中。然后我想重复这个过程1000次
我尝试过这个过程,但是返回的值是相同的,新的方法不会进入新的data.frame
这里是一些data.frame(hlth)的行和列。
DateIn adgadj性医疗收费pwtfc
2006年1月1日3.033310转向0.00 675.1151
1992年1月10日3.388245转向2540.33640.2261
1995年10月1日3.550847转向572.78 607.6200
1/10/1996 2.893707小母牛549.42 425.5217
1996年10月1日3.647233 STEER 669.18 403.8238
我迄今为止使用的代码:
set.seed[25]
beta<-data.frame()
net.row<-function(n=50){
netcol=sample(1:nrow(hlth),size=n ,replace=TRUE)
rNames <- row.names(hlth)
subset(hlth,rNames%in%netrow,select=c(25:49))
colMeans(s1,na.rm=TRUE,dims=1)
}
beta$net.row=replicate(1000,net.row()); net.row
set.seed[25]
beta只是添加到我的评论中(并首先粘贴):
netcol=sample(1:nrow(hlth),size=n,replace=TRUE)
应该是由netrow=…
引起的,错误是一个范围问题-R试图对函数beta
进行子集划分,可能是因为它无法在您定义的data.frame
中找到netRowMeans
,转到全局环境并在那里抛出一个错误
还有一些其他的事情。您没有将子集(hlth,rNames%in%netrow,select=c(25:49))
分配给变量,我认为您的意思是分配给s1
,因此colMeans
可能正在您在全局环境中设置的某个对象上运行
如果您希望以这种方式将变量直接传递到数据帧beta
,则必须使用正确的列数和行数初始化beta
——该列表示您传递的将是(1 x 25)
的向量,因此无法放入单个列中。使用25列和1000行初始化一个名为mat
的矩阵(避免与掩盖实际错误消息的作用域错误混淆)可能会更好
编辑:自从我发布这篇文章以来,这个问题被稍微编辑了一下,但大多数观点仍然有效。netcol=sample(1:nrow(hlth),size=n,replace=TRUE)
应该是由netrow=…
引起的,错误是一个范围界定问题-R试图对函数beta
进行子集划分,大概也是这样,因为它无法在您定义的data.table
中找到netRowMeans
,所以会转到全局环境并在那里抛出错误。