首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R如何采样data.frame列表,采样大小为向量

R如何采样data.frame列表,采样大小为向量
EN

Stack Overflow用户
提问于 2013-04-10 03:36:30
回答 1查看 92关注 0票数 0

我有一个data.frames的列表:

代码语言:javascript
复制
ldf <- list(structure(c(2, 0.15, 0.52, 5, 6, 2, 1), .Dim = c(1L, 7L), .Dimnames = list(
    "M01", c("fitness", "cMRc", "cMRcg", "pMR", "cMEnr", "gMR", 
    "sex"))), structure(c(4, 4, 9, 0.22, 0.19, 0.05, 0.555, 0.495, 
0.605, 8, 7, 4, 15, 10, 4, 3, 3, 3, 1, 1, 1), .Dim = c(3L, 7L
), .Dimnames = list(c("M03", "M06", "M12"), c("fitness", "cMRc", 
"cMRcg", "pMR", "cMEnr", "gMR", "sex"))), structure(c(4, 4, 7, 
7, 0.145, 0.09, 0.2, 0.195, 0.46, 0.68, 0.45, 0.48, 6, 3, 7, 
5, 8, 3, 10, 9, 4, 4, 4, 4, 1, 1, 1, 1), .Dim = c(4L, 7L), .Dimnames = list(
    c("M05", "M08", "M09", "M10"), c("fitness", "cMRc", "cMRcg", 
    "pMR", "cMEnr", "gMR", "sex"))), structure(c(10, 10, 0.145, 
0.18, 0.725, 0.4, 6, 5, 9, 5, 5, 5, 1, 1), .Dim = c(2L, 7L), .Dimnames = list(
    c("M02", "M04"), c("fitness", "cMRc", "cMRcg", "pMR", "cMEnr", 
    "gMR", "sex"))))

如何对这些data.frames进行采样,并根据向量调整采样大小:

代码语言:javascript
复制
s <- c(1,2,3,1)

所以对于ldf[[1]],我会得到:

代码语言:javascript
复制
ldf[[1]][sample(nrow(ldf[[1]]),size=1),]

对于ldf[[2]],我会得到:

代码语言:javascript
复制
ldf[[2]][sample(nrow(ldf[[2]]),size=2),]

ect......

如何将其封装在lapply调用中,我猜应该是这样的:

代码语言:javascript
复制
lapply(ldf,function(x) x[sample(nrow(x),s),]) # but it's not sampling according to sizes values in s
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 04:13:51

你可以像这样使用mapply(正如@Justin提到的):

代码语言:javascript
复制
f <- function(x,y){
  rep <- y > nrow(x)    ## repeat if y > nrow(x)
  x[sample(nrow(x),size=y,rep=rep),]
}
s <- c(1,2,3,1)
mapply(FUN=f,ldf,s )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15910957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档