我有 36 个数据帧,标记为IALPlms3,IALPsts3,IALPlmns3,IALPstns3
, IALPlms4,IALPsts4,IALPlmns4,IALPstns4
, IALPlms5,IALPsts5,IALPlmns5,IALPstns5
, ...
IALPlms11,IALPsts11,IALPlmns11,IALPstns11
。所以,可能有4种不同类型的标签字符串(即IALPlms
,IALPsts
,IALPlmns
,IALPstns
),但9个不同的数字(从3到11)。
我想将每个数据帧的行数存储在一个新的数据帧中。我创建了新的数据框:
tableROWS <- setNames(data.frame(matrix(ncol = 4, nrow = 9)), c("IALPlms","IALPsts","IALPlmns","IALPstns"))
row.names(tableROWS) <- c("table3","table4","table5","table6","table7","table8","table9","table10","table11")
现在我想创建一个循环,以便为每个数据帧存储行数。我试过这个,但它不起作用。
for(i in 3:11) {
for (j in 1:9) {
tableROWS[j,1] = nrow(IALPlms(i))
tableROWS[j,2] = nrow(IALPsts(i))
tableROWS[j,3] = nrow(IALPlmns(i))
tableROWS[j,4] = nrow(IALPstns(i))
}
}
我想获得类似的东西:
IALPlms IALPsts IALPlmns IALPstns
table3 #nrow #nrow #nrow #nrow
table4 #nrow #nrow #nrow #nrow
table5 #nrow #nrow #nrow #nrow
table6 #nrow #nrow #nrow #nrow
table7 #nrow #nrow #nrow #nrow
table8 #nrow #nrow #nrow #nrow
table9 #nrow #nrow #nrow #nrow
table10 #nrow #nrow #nrow #nrow
table11 #nrow #nrow #nrow #nrow
我还尝试在循环中使用,例如:
labelA <- paste("IALPlms",(i) )
labelA <-gsub(" ","",labelA)
然后使用nrow(labelA)
,但它不会将其识别为现有数据帧,它假定它只是一个字符串。
您可以get
在构造变量名称的字符串后使用- 函数来获取变量名称是字符串文字的对象。尝试例如:
var1 <- 1:2
var2 <- 5:6
get("var1") #== var1
#[1] 1 2
var.name <- "var2"
get(var.name)
#[1] 5 6
所以,这样的事情应该工作:
tableROWS <- setNames(data.frame(matrix(ncol = 4, nrow = 9)), c("IALPlms","IALPsts","IALPlmns","IALPstns"))
row.names(tableROWS) <- c("table3","table4","table5","table6","table7","table8","table9","table10","table11")
for(i in 3:11) {
tableROWS[i-2,1] <- nrow(get(paste0("IALPlms", i)))
tableROWS[i-2,2] <- nrow(get(paste0("IALPsts", i)))
tableROWS[i-2,3] <- nrow(get(paste0("IALPlmns", i)))
tableROWS[i-2,4] <- nrow(get(paste0("IALPstns", i)) )
}
但是,我不确定j
上面的-loop的目的是什么,您只需要遍历 table-suffixes。
写得更紧,你可以这样做:
for(i in 3:11) {
for (j in seq_len(ncol(tableROWS))) {
tableROWS[i-2, 1] <- nrow(get(paste0(names(tableROWS)[j], i)))
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句