2

文書化された適用関数を使用してループを回避しようとしていますが、目的に合った例を見つけることができませんでした。(1 xp) であるxと (1 xq) であるyの 2 つのベクトルがあり、それらのパラメーターのデカルト積を関数に入力したいと考えています。ここに節約の例を示します。

    require(kernlab)
    x = c("cranapple", "pear", "orange-aid", "mango", "kiwi", 
           "strawberry-kiwi", "fruit-punch", "pomegranate")
    y = c("apple", "cranberry", "orange", "peach")

    sk <- stringdot(type="boundrange", length = l, normalized=TRUE)
    sk_map = function(x, y){return(sk(x, y))}

ある次元で適用関数を使用し、他の次元でループできることはわかっていますが、1つのステップでそれを行う方法が必要だと感じています...何かアイデアはありますか?

4

2 に答える 2

1

これはあなたが念頭に置いていたことですか:

sk <- stringdot(type="boundrange", length = 2, normalized=TRUE)

# Create data frame with every combination of x and y
dat = expand.grid(x=x,y=y)

# Apply sk by row
sk_map = apply(dat, 1, function(dat_row) sk(dat_row[1],dat_row[2]))
于 2014-05-19T22:51:26.267 に答える
1

outer関数がベクトル化されている場合は、この関数を使用できます。ベクトル化されていない場合は、関数を使用してベクトル化された関数Vectorizeを作成できます。

outer(x,y,FUN=sk)

また

outer(x,y, FUN=Vectorize(sk))
于 2014-05-19T23:40:11.900 に答える