0

data.frameオブジェクトの名前付きリストがあります(training_data)。各data.frameオブジェクトは、「x」列に基づいてテストされ、テストに合格すると、そのdata.frameオブジェクトの名前が返されることになっています。

以下の場合、「a」と「b」が返されることになっています。

df <- data.frame(x=1:10, y=1:10)
df1 <- data.frame(x=11:20, y=11:20)
training_data <- list(df, df, df1, df1)
names(training_data) <- c("a", "b", "c", "d")

pos <- lapply(training_data, function(data) {
                                 if(data$x==1)
                                    ["return the name of the data.frame object in hand"]
                              })

私の質問は、lapplyの反復内で現在処理されているオブジェクトの名前を正確に判別する方法と、その名前を「pos」リストに移動するように返す方法です。

よろしく

4

1 に答える 1

2

ここで使用する必要はありませんlapply。たとえば、リストにアクセスできます。

training_data[['pos']] 

これにより、「pos」または「posxx...」という名前のdata.frameにアクセスできます。

OPの説明後に編集

私はリストの名前にlapplyを使用します、私と私はメインリストに上記の同じモードのアクセスを使用します

pos <- lapply(names(training_data), function(data) {
  if(training_data[[data]]$x==1)        ## here your condition is not correct
    data

})

  [[1]]
[1] "a"

[[2]]
[1] "b"

[[3]]
NULL

[[4]]
NULL

次のようなものを使用してNULL要素を削除できます

unlist(pos)
[1] "a" "b"

sapplyただし、名前付きリストを返すを使用すると、ここでより良い出力が得られると思います。

于 2013-02-01T00:51:08.363 に答える