【问题标题】:put the individual list name to the last column in the list?将单个列表名称放在列表的最后一列?
【发布时间】:2014-03-06 17:49:03
【问题描述】:

我想分别将单个列表名称添加到最后一列。有效地做到这一点的最佳方法是什么。

lst <- list(a=matrix(runif(10), nrow=5, ncol=2), b=matrix(runif(6), nrow=3, ncol=2))

$a
      [,1]       [,2]
[1,] 0.5257330 0.52673079
[2,] 0.2103107 0.23357179
[3,] 0.3745236 0.03687697
[4,] 0.9731074 0.15569480
[5,] 0.2248541 0.60258915

$b
      [,1]      [,2]
[1,] 0.9901820 0.3648310
[2,] 0.8922225 0.4285105
[3,] 0.6963518 0.5795353

我想要这个:这意味着单个列表名称应分别添加到最后一列。

$a
     [,1]                [,2]                 [,3]
[1,] "0.52573303761892"  "0.526730791199952"  "a" 
[2,] "0.210310699883848" "0.233571790158749"  "a" 
[3,] "0.374523550504819" "0.0368769748602062" "a" 
[4,] "0.973107369150966" "0.155694802291691"  "a" 
[5,] "0.224854125175625" "0.602589153219014"  "a" 

 $b
      [,1]                [,2]                [,3]
[1,] "0.990182007197291" "0.36483103595674"  "b" 
[2,] "0.892222490161657" "0.42851050500758"  "b" 
[3,] "0.696351842954755" "0.579535307129845" "b" 

任何帮助将不胜感激。

凯文

【问题讨论】:

  • lapply(names(lst), function(x) cbind(lst[[x]], x))?为什么要这样做?
  • 谢谢阿难。我的问题是这样的:stackoverflow.com/questions/22233358/…我的方法很差,但是在使用你的答案作为中间步骤后可能会起作用。所以我寻找一种更好的方法,这就是我问你问题的原因。 @Rcoster

标签: r


【解决方案1】:

保留原始列表中的名称的解决方案:

mapply(function(x, y) cbind(x, y), lst, names(lst))

【讨论】:

  • 有趣的是,不起作用的示例代码(names(a) 应该是 names(lst),我想)得到了投票,而 does 工作的答案却没有得到任何支持.唔。我永远不会理解 Stack Overflow 上的投票。
  • 我忘记把我的测试变量改成例子的变量了……他是新来的,给他一个机会!
  • 谢谢大家理解,我在测试代码的时候已经将names(a)修改成了names(lst)。
【解决方案2】:

这里有一个解决方案,可以准确地满足您的要求。根据您的预期输出,您似乎知道这样做会将矩阵中的数字强制转换为字符。

lapply(names(lst), function(x) {
  `colnames<-`(cbind(lst[[x]], x), NULL)
} )
# [[1]]
#      [,1]                [,2]                [,3]
# [1,] "0.497699242085218" "0.934705231105909" "a" 
# [2,] "0.717618508264422" "0.212142521282658" "a" 
# [3,] "0.991906094830483" "0.651673766085878" "a" 
# [4,] "0.380035179434344" "0.125555095961317" "a" 
# [5,] "0.777445221319795" "0.267220668727532" "a" 
# 
# [[2]]
#     [,1]                 [,2]                [,3]
# [1,] "0.386114092543721"  "0.86969084572047"  "b" 
# [2,] "0.0133903331588954" "0.34034899668768"  "b" 
# [3,] "0.382387957070023"  "0.482080115471035" "b" 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2018-03-10
    • 2021-10-22
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多