0

同じ名前のリスト v1 と v2 があります。

v1: structure(list(ID = c("A1"), Name = c("A2"),.Names = c("ID", "Name") 
    ...
v2: structure(list(ID = c("B1"), Name = c("B2"),.Names = c("ID", "Name") 

名前を保持しながら、リストを連結したい、つまり次のようなものを取得したい:

v12:  structure(list(ID = c("A1","B1"), Name = c("A2","B2"), 
.Names = c("ID", "Name")

手動連結は機能します:

v12<-cbind(Map(c, v1, v2))

ただし、v1 と v2 が lapply() を適用した結果であり、リスト自体に格納されている場合、同様のロジックは機能しないようです。

v<-lapply(...)
v12<-cbind(Map(c,v))

プロセスを自動化する最良の方法は何ですか? 例えば:

v1 <- structure(list(ID = c("A1"), Name = c("A2")),.Names = c("ID", "Name"))             
v2 <-  structure(list(ID = c("B1"), Name = c("B2")),.Names = c("ID", "Name"))
v <- list(v1, v2)
k<-t(mapply(c, v))

結果:

ID  Name
A1  A2
B1  B2

ありませんで:

  ID    Name
"A1","B1"   "A2","B2"
4

4 に答える 4

1

これはどう?

> data.frame(ID = do.call("paste", c(lapply(v, FUN = "[", "ID"), sep = ",")), 
+    Name = do.call("paste", c(lapply(v, FUN = "[", "Name"), sep = ",")))
     ID  Name
1 A1,B1 A2,B2
于 2012-10-03T08:05:10.617 に答える
1

あなたの質問は非常に不明確だと思いますが、試してみてください:

setNames(Reduce(function(x, y) paste(x, y, sep = ", "), v), 
         c("ID", "Name"))
#       ID     Name 
# "A1, B1" "A2, B2"

または、そこにも a を追加しt()ます。

t(setNames(Reduce(function(x, y) paste(x, y, sep = ", "), v), 
           c("ID", "Name")))
     ID       Name    
[1,] "A1, B1" "A2, B2"
于 2012-10-03T07:28:04.987 に答える
0

私が正しく理解していれば、他の2つと同じ構造のリストが必要ですが、要素がマージされています。その場合、これを試してください:

ul <- unlist(list(v1,v2))
sapply(unique(names(ul)),function(x) as.vector(ul[names(ul)%in%x]),simplify=FALSE)
$ID
[1] "A1" "B1"

$Name
[1] "A2" "B2"
于 2012-10-03T08:22:13.730 に答える
0

アイデア::

v1 <- structure(list(ID = c("A1"), Name = c("A2")),.Names = c("ID", "Name"))
v2 <-  structure(list(ID = c("B1"), Name = c("B2")),.Names = c("ID", "Name"))
v <- list(v1, v2)


t(mapply(c, v)) # output as matrix

2 回目の試行:

unlist(apply(mapply(c,v), 1, function(x) list(unlist(x))), recursive = FALSE)
# output as list

更新:各リスト内で一意の値を使用する場合は、次を使用します。

v3 <- list(ID = "B1", Name = "B3")
vx <- list(v1, v2, v3)

unlist(apply(mapply(c,vx), 1,
             function(x) list(unique(unlist(x)))), recursive = FALSE)
于 2012-10-03T07:26:41.200 に答える