2016-03-24 3 views
0

で指定されたリストのうちの2つの要素を組み合わせ結合される第2の要素とを含む。私は、行と列は、それぞれ第1の名前を名前として、名前のリストのうちの2つの要素を取ることに関数を適用し、と行列に入れたいR

input <- list(a="tom", b="dick", c="harry") 

と要素を組み合わせるための機能として、私はpaste0を使用するマトリックスの結果は次のようになります:私はすでに試してみました

a   b   c   
a NA "tomdick" "tomharry" 
b NA  NA  "dickharry"   
c NA  NA   NA 

例えば、私は、この名前のリストを を持っていますcombnですが、私は次のようになります:

> combn(input, 2, FUN=function(x) paste0(x[1], x[2])) 
[1] "tomdick" "tomharry" "dickharry" 

どうすればいいですか?

+1

おそらく '外部(input、input、paste0)'ですか?なぜ残りのすべての組み合わせが結果に含まれているのかわからないのですが、3つの要素すべてが表示されます。あなたはその部分を説明していません。 –

答えて

1

とマトリックスの下部に名前を交換し

for(i in row.names(d)){ 
for(j in colnames(d)){ 
d[i, j] <- paste0(input[i], input[j]) 
}} 

:名前を記入する

d <- data.frame(matrix(NA, nrow = length(input), ncol = length(input))) 
colnames(d) <- rownames(d) <- names(input) 
d 
    a b c 
a NA NA NA 
b NA NA NA 
c NA NA NA 

forがループを@David Arenburgのコメントと@ Jimbouの答えを組み合わせると、

input <- list(a="tom", b="dick", c="harry") 
result <- outer(input, input, paste0) 
result[lower.tri(result,diag = T)] <- NA 

名の結果はあなたが投稿行列を格納します。

2

もっと良い方法が必要です。しかし、あなたはこのようなことをすることができます。

空のデータフレームを作成します。NAS

d[lower.tri(d, diag = T)] <- NA 
d 
    a  b   c 
a <NA> tomdick tomharry 
b <NA> <NA> dickharry 
c <NA> <NA>  <NA> 
関連する問題