-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が、整数(?)または?が必要です。

ヘルプのためのThx

4

2 に答える 2

3

これに使用できますgetが、注意してください!代わりに、aでテーブルを読み取るのlistがRっぽい方法です。

file.names <- list.files()

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

lapplyそうすれば、あなたはapply家族のすべての便利さを自由に使えるようになります。

lapply(dat, nrow)

を使用した解決策getvector非常に重要な関数であるため、変数名も不適切です):

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 に答える