1

ファイルのリストがあり、1 つのファイルを他のファイルのセットと比較したい場合、どうすればよいでしょうか?

my.test <- list[1]
my.reference.set <- list[-1]

これはもちろん機能しますが、これをループに入れたいと思います.my.testは毎回異なります(リスト内の各ファイルが1回の反復でmy.testになるように、つまり、250個のファイルのリストがあり、その中の 12 個のファイルのすべてのサブセットに対してこれを行います。

> num <- (1:2)
> sdasd<- c("asds", "ksad", "nasd", "ksasd", "nadsd", "kasdih")
> splitlist<- split(sdasd, num)
> splitlist
$`1`
[1] "asds"  "nasd"  "nadsd"

$`2`
[1] "ksad"   "ksasd"  "kasdih"

> for (i in splitlist) {my.test <- splitlist[i] # "asds"
+ my.reference.set <- splitlist[-i] # "nasd" and "nadsd"
+ combined <- data.frame (my.test, my.reference.set)
+ combined}
Error in -i : invalid argument to unary operator
> 

次に、次の反復が必要です。

my.test <- splitlist[i] #my.test to be "nasd"
my.reference.set <- splitlist[-i] # "asds" and "nadsd"
}

最後に、分割リスト[1]の場合、

my.test <- splitlist[i] # "nadsd" 
my.reference.set <- splitlist[-i] # "asds" and "ksad"
}

次に、分割リストについても同じ[2]

4

1 に答える 1

2

これはあなたが望むことをしますか?ここでの重要なポイントは、名前ではなくリストのインデックスx[-n]をループすることです。これは、インデックスが自然数の場合にのみ機能するためnです (いくつかのあいまいな例外があります)。また、結果をデータ フレームまたはリストのどちらで表示するかがわかりませんでした。後者では、コンポーネントをさまざまな長さにすることができます。

num <- 1:2
sdasd <- c("asds", "ksad", "nasd", "ksasd", "nadsd", "kasdih")
splitlist<- split(sdasd, num)
L <- vector("list",length(splitlist))
for (i in seq_along(splitlist)) {
    my.test <- splitlist[[i]] # "asds"
    my.reference.set <- splitlist[-i] # "nasd" and "nadsd"
    L[[i]] <- list(test=my.test, ref.set=my.reference.set)
}

編集:上記の例にはまだ少し混乱していますが、これがあなたが望むものだと思います:

refs <- lapply(splitlist,
     function(S) {
         lapply(seq_along(S),
            function(i) {
               list(test=S[i], ref.set=S[-i])
           })
     })

refsネストされたリストです。最上位レベルの長さは 2 ( の長さsplitlist)、次の各レベルの長さは 3 ( の要素の長さsplitslist)、最下位レベルのそれぞれの長さは 2 (テストと参照セット) です。

于 2012-05-27T17:32:08.323 に答える