【发布时间】:2019-08-30 22:12:00
【问题描述】:
我正在尝试使用 R 中的单个向量在列表中创建列表。
我有矢量
Conditions = c('A', 'B', 'C', 'D')
我想要一个包含 A、B、C 和 D 的列表(没问题)。但我也希望这些是包含四个项目的列表,名称如下:A vs A、A vs B、...D vs C、D vs D,最终得到一个包含四个列表(A、B 、C 和 D)每个都包含四个我可以添加数据框的列表(“vs”列表)。
基本上我想要这样的东西:
My list
|
|
| /- A vs A /- B vs A /- C vs A /- D vs A
| / / / /
| /- A vs B /- B vs B /- C vs B /- D vs B
| / / / /
---A-|-------------B-|------------C-|------------D-|
\ \ \ \
\ - A vs C \ - B vs C \ - C vs C \ - D vs C
\ \ \ \
\- A vs D \- B vs D \- C vs D \- D vs D
这是我尝试过的:
Conditions <- c('A', 'B', 'C', 'D')
MyList <- as.list(Conditions)
for(i in 1:length(MyList)) {
for(i in 1:length(Conditions)) {
MyList[i] <- list(paste(MyList[i], 'vs', Conditions[i]))
}
}
但它不起作用。例如,我的第一个项目刚刚从 A 转到 A vs A vs A vs A vs A。
编辑:为了更清楚,我想,
一个列表,例如,
Letters
这将包含四个列表,
A、B、C、D
这些依次包含列表,对应于它们的名称:
答:A vs A、A vs B、A vs C、A vs D
B:B vs A、B vs B、B vs C、B vs D
C:C vs A、C vs B、C vs C、C vs D
D:D vs A、D vs B、D vs C、D vs D
然后我将在每个“vs”中放入一个数据框。
迄今为止最有帮助的答案来自 MrFlick:
lapply(Conditions, function(x)
as.list(paste(x, "vs", Conditions)))
返回:
[[1]]
[[1]][[1]]
[1] "A vs A"
[[1]][[2]]
[1] "A vs B"
[[1]][[3]]
[1] "A vs C"
...
[[4]][[2]]
[1] "D vs B"
[[4]][[3]]
[1] "D vs C"
[[4]][[4]]
[1] "D vs D"
我想要的只是列表为空,字符串用作名称。对于上面的元素,我认为它看起来像这样:
[[D]][[D vs D]]
[1] NA #Data Frame DvsD.Rda to be added here later.
【问题讨论】:
-
查看其他答案,我的是唯一一个类似于您绘制的树的答案。这实际上是您想要的(与
c("A","A","C","D")相比)还是每个条件(c("A","B","C","D"))? -
应该是A B C D,我弄错了,虽然我以为我已经把它编辑掉了。
-
好的,我已经相应地编辑了我的答案
标签: arrays r list vector element