Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将R中命名列表中的两个元素组合起来_R_List_Combinations - Fatal编程技术网

将R中命名列表中的两个元素组合起来

将R中命名列表中的两个元素组合起来,r,list,combinations,R,List,Combinations,我想从一个命名列表中提取2个元素,对其应用一个函数,并将其放入一个矩阵中,其中的行和列名分别是组合的第一个和第二个元素的名称。 例如,我有一个命名列表: input <- list(a="tom", b="dick", c="harry") 我已经尝试了combn,但是我得到了: > combn(input, 2, FUN=function(x) paste0(x[1], x[2])) [1] "tomdick" "tomharry" "dickharry" 我该怎么做呢?

我想从一个命名列表中提取2个元素,对其应用一个函数,并将其放入一个矩阵中,其中的行和列名分别是组合的第一个和第二个元素的名称。 例如,我有一个命名列表:

input <- list(a="tom", b="dick", c="harry")
我已经尝试了
combn
,但是我得到了:

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

我该怎么做呢?

一定有更好的办法。但你可以这样做

创建空数据帧:

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
将矩阵下部的名称替换为NAs

d[lower.tri(d, diag = T)] <- NA
d
     a       b         c
a <NA> tomdick  tomharry
b <NA>    <NA> dickharry
c <NA>    <NA>      <NA>

d[lower.tri(d,diag=T)]一定有更好的方法。但你可以这样做

创建空数据帧:

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
将矩阵下部的名称替换为NAs

d[lower.tri(d, diag = T)] <- NA
d
     a       b         c
a <NA> tomdick  tomharry
b <NA>    <NA> dickharry
c <NA>    <NA>      <NA>

d[lower.tri(d,diag=T)]结合@David Arenburg的评论和@Jimbou的回答

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

input结合@David Arenburg的评论和@Jimbou的回答

input <- list(a="tom", b="dick", c="harry")
result <- outer(input, input, paste0)
result[lower.tri(result,diag = T)] <- NA
输入可能只是
外部(输入,输入,粘贴0)
?我不明白为什么你不想在结果中包含所有其他的组合-在你想要的结果中,所有3个元素都被表示出来。您还没有解释那个部分。可能只是
外部(输入,输入,粘贴0)
?我不明白为什么你不想在结果中包含所有其他的组合-在你想要的结果中,所有3个元素都被表示出来。你还没有解释那部分。