我有一些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
的输入是一个字符,但我需要整数(?)或?
寻求帮助
答案 0 :(得分:3)
您可以使用get
,但要小心!而是以list
读取表格是R-ish方式:
file.names <- list.files()
dat <- lapply(file.names, read.table)
然后您拥有lapply
和apply
家庭的所有便利,例如:
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)))
}
但由于很多原因,这种技术形式很差......
答案 1 :(得分:1)
如果您想确定.GlobalEnv
中您知道的项目的属性,则可以:
> sapply( c("A","B"), function(objname) nrow(.GlobalEnv[[objname]]) )
A B
5 4
您可以将任何字符向量替换为c(“A”,“B”)`。如果对象不在全局环境中,它只返回NULL,因此它非常健壮。