-1

我有一些data.frames

dat1=read.table...
dat2=read.table...
dat3=read.table...

我会计算每个数据集的行数。所以名称是这样保存的(不能“改变”它) vector=c("dat1","dat2","dat3...)

p <- vector(numeric, length=1:length(dat))
counting <- function(x) {for (i in 1:x){
      p[i]<-nrow(dat[i])}
return(p)
}

这不起作用,因为输入nrow是一个字符,但我需要整数(?)还是?

谢谢帮助

4

2 回答 2

3

你可以用get这个,但要小心!相反,阅读 a 的表格list是 R-ish 方式:

file.names <- list.files()

dat <- lapply(file.names, read.table)

然后,您就可以享受家庭的所有便利lapplyapply例如:

lapply(dat, nrow)

使用的解决方案get(也是vector一个错误的变量名,因为它是一个非常重要的功能):

lapply(vector, function(x) nrow(get(x)))

您的方法失败,因为没有调用dat要索引的对象。for loop可能看起来像:

p = NULL
for(v in vector) {
  p <- c(p, nrow(get(v)))
}

但是由于很多原因,这种技术的形式很差......

于 2013-01-04T18:26:37.813 回答
1

如果您想确定您知道在 中的项目的属性,则可以使用.GlobalEnv

> sapply( c("A","B"), function(objname) nrow(.GlobalEnv[[objname]])  )
A B 
5 4 

您可以用任何字符向量替换 c("A","B")`。如果对象不在全局环境中,它只会返回 NULL,因此它相当健壮。

于 2013-01-04T18:51:58.830 回答