Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
Arrays 在r中,如何使用一个向量中的元素在列表中创建列表_Arrays_R_List_Vector_Element - Fatal编程技术网

Arrays 在r中,如何使用一个向量中的元素在列表中创建列表

Arrays 在r中,如何使用一个向量中的元素在列表中创建列表,arrays,r,list,vector,element,Arrays,R,List,Vector,Element,我正在尝试使用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

我正在尝试使用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
[[D]][[D vs D]]
    [1] NA        #Data Frame DvsD.Rda to be added here later.
这就是我尝试过的:

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、B、C、D

这些文件将依次包含与其名称相对应的列表:

答:A对A,A对B,A对C,A对D B:B对A,B对B,B对C,B对D C:C对A,C对B,C对C,C对D D:D对A,D对B,D对C,D对D

然后,我将在每个“vs”中放入一个数据帧

到目前为止,最有用的答案来自Flick先生:

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"

我只希望列表为空,字符串用作名称。对于上面的元素,我认为它应该是这样的:

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
[[D]][[D vs D]]
    [1] NA        #Data Frame DvsD.Rda to be added here later.

这是我的解决方案,看一看


vec这是我的解决方案,看一看


vec听起来像是你想要的

lapply(Conditions, paste, "vs", Conditions)
这是假设向量在列表中是确定的。如果您需要列表,那么您可以这样做

lapply(Conditions, function(x) as.list(paste(x, "vs", Conditions)))

如果您需要给出主列表名称,请使用setNames,听起来像是您想要的

lapply(Conditions, paste, "vs", Conditions)
这是假设向量在列表中是确定的。如果您需要列表,那么您可以这样做

lapply(Conditions, function(x) as.list(paste(x, "vs", Conditions)))

如果您需要给出主列表名称,请使用setNames,我认为您正在尝试这样做:

Conditions <- c('A', 'B', 'C', 'D')

MyList = lapply(Conditions, function(x) list())
names(MyList) = Conditions

for(i in names(MyList)) {
    for(j in 1:length(Conditions)) {
        MyList[[i]][[paste(i, 'vs', Conditions[j])]] = NA #Put NA or the data frame you want.
    }
}

我想你想做的是这样的:

Conditions <- c('A', 'B', 'C', 'D')

MyList = lapply(Conditions, function(x) list())
names(MyList) = Conditions

for(i in names(MyList)) {
    for(j in 1:length(Conditions)) {
        MyList[[i]][[paste(i, 'vs', Conditions[j])]] = NA #Put NA or the data frame you want.
    }
}

如果你的逻辑总是一样的,试试看

Conditions = c('A', 'B', 'C', 'D')
L=setNames(as.list(Conditions),Conditions)

L=lapply(L, function(x){
  setNames(vector("list",length(Conditions)),paste0(x," vs ",Conditions))
})

> str(L)
List of 4
 $ A:List of 4
  ..$ A vs A: NULL
  ..$ A vs B: NULL
  ..$ A vs C: NULL
  ..$ A vs D: NULL
 $ B:List of 4
  ..$ B vs A: NULL
  ..$ B vs B: NULL
  ..$ B vs C: NULL
  ..$ B vs D: NULL
 $ C:List of 4
  ..$ C vs A: NULL
  ..$ C vs B: NULL
  ..$ C vs C: NULL
  ..$ C vs D: NULL
 $ D:List of 4
  ..$ D vs A: NULL
  ..$ D vs B: NULL
  ..$ D vs C: NULL
  ..$ D vs D: NULL

如果你的逻辑总是一样的,试试看

Conditions = c('A', 'B', 'C', 'D')
L=setNames(as.list(Conditions),Conditions)

L=lapply(L, function(x){
  setNames(vector("list",length(Conditions)),paste0(x," vs ",Conditions))
})

> str(L)
List of 4
 $ A:List of 4
  ..$ A vs A: NULL
  ..$ A vs B: NULL
  ..$ A vs C: NULL
  ..$ A vs D: NULL
 $ B:List of 4
  ..$ B vs A: NULL
  ..$ B vs B: NULL
  ..$ B vs C: NULL
  ..$ B vs D: NULL
 $ C:List of 4
  ..$ C vs A: NULL
  ..$ C vs B: NULL
  ..$ C vs C: NULL
  ..$ C vs D: NULL
 $ D:List of 4
  ..$ D vs A: NULL
  ..$ D vs B: NULL
  ..$ D vs C: NULL
  ..$ D vs D: NULL


看看其他答案,我的答案是唯一一个和你们画的树相似的答案。这就是你想要的与cA,A,C,D或每个条件cA,B,C,D相比的结果吗?应该是B,C,D,我犯了一个错误,虽然我认为我已经把它删掉了。好的,我已经根据其他答案编辑了我的答案,我的是唯一一个和你画的树相似的答案。这就是你想要的和cA,A,C,D比较的结果吗?这应该是一个B,C,D,我犯了一个错误,虽然我认为我已经把它删掉了。好的,我已经编辑了我的答案,我有没有办法得到$A-A对A,A对B,A对C。。。等等,这样我就可以用一个数据帧来替换字符串了?这非常接近我想要的,但我不能完全匹配它。你能再看看我的问题吗?我试着说得更具体一些。@SolebaySharp这应该能回答你的问题。有没有办法让我得到$a-a对a,a对B,a对C。。。等等,这样我就可以用一个数据帧来替换字符串了?这非常接近我想要的,但我不能完全匹配它。你能再看看我的问题吗?我试着说得更具体一点。@SolebaySharp这应该能回答你的问题我本来不清楚,我正在寻找的“vs”组件也将是列表,其中将填充数据帧。我认为实际上您已经给了我一些非常接近我想要的东西,我只是无法命名我的列表。@SolebaySharp那么您希望最终对象是什么?你能在问题中包括所需的输出吗?像listA=listA v a=list,a v b=list。。。等等。你打算如何在其中获取data.frames?文本描述仍然不够精确。你期望的实际结构是什么?对于这个简单的示例,您将如何手工构建它?dput会是什么样子?我不确定如何手工构建它。我正在尝试自动化它,因为A、B、C和D都会改变。如果它们是文件夹,则第一条路径将如下所示:字母/A/AvsA,最终将包含一个数据帧AvsA.Rda。接下来是字母/A/AvsB/AvsB.Rda等等。然后在以后绘图时,我希望能够按名称调用特定的数据帧,因为我已经对它们进行了逻辑命名和组织。最初我不清楚,我正在寻找的“vs”组件也将是列表,其中将填充数据帧。我认为实际上您已经给了我一些非常接近我想要的东西,我只是无法命名我的列表。@SolebaySharp那么您希望最终对象是什么?你能在问题中包括所需的输出吗?像listA=listA v a=list,a v b=list。。。等等。你打算如何在其中获取data.frames?文本描述仍然不够精确。你期望的实际结构是什么?对于这个简单的示例,您将如何手工构建它?dput会是什么样子?我不确定如何手工构建它。我正在尝试自动化它,因为A、B、C和D都会改变。如果它们是文件夹,则第一条路径将如下所示:字母/A/AvsA,最终将包含一个数据帧AvsA.Rda。接下来是字母/A/AvsB/AvsB.Rda等等。然后在以后绘图时,我希望能够调用特定的数据fr
ames按名称命名,因为我已按逻辑对其进行命名和组织。抱歉,我最初不清楚,我正在寻找的“vs”组件也是将填充数据帧的列表。您如何将用作字符串的内容作为列表的名称?i、 e.不是$D[[4]][1]D vs D,而是$D$D vs D[1]NA数据框,稍后放在这里。我还更改了MyList的初始化对不起,我本来不清楚,我正在寻找的“vs”组件也将是列表,其中将填充数据帧。您如何将用作字符串的内容作为列表的名称?i、 e.不是$D[[4]][1]D vs D,而是$D$D vs D[1]NA数据框,稍后放在这里。我还更改了MyList的初始化。对不起,我原来的问题措辞不好,你能再看一遍吗?对不起,我原来的问题措辞不好,你能再看一遍吗?