R 是否将单个列表名称放在列表的最后一列?

R 是否将单个列表名称放在列表的最后一列?,r,R,我想分别在最后一列中添加个人列表名。有效地做到这一点的最佳方法是什么 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.155694

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

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
任何帮助都将不胜感激


凯文

这里有一个解决方案,可以完全满足你的要求。根据预期的输出,您似乎意识到这样做是将矩阵中的数字强制为字符

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" 
lappy(名称(lst)、函数(x){

`colnames这里有一个解决方案,它完全满足了您的要求。根据您的预期输出,您似乎意识到这样做是将矩阵中的数字强制为字符

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" 
lappy(名称(lst)、函数(x){

`colnames这里有一个解决方案,它完全满足了您的要求。根据您的预期输出,您似乎意识到这样做是将矩阵中的数字强制为字符

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" 
lappy(名称(lst)、函数(x){

`colnames这里有一个解决方案,它完全满足了您的要求。根据您的预期输出,您似乎意识到这样做是将矩阵中的数字强制为字符

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" 
lappy(名称(lst)、函数(x){

`colnames将名称保留在原始列表中的解决方案:

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

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

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

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

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

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

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

lappy(名称(lst),函数(x)cbind(lst[[x]],x))
?为什么要这样做?谢谢阿南达。我的问题是:我的方法很差,但在使用你的答案作为中间步骤后可能会起作用。所以我寻找一个更好的方法,这就是我问你问题的原因。@Rcoster
lappy(名称(lst),函数(x)cbind(lst[[x]],x))
?你为什么要这样做?谢谢阿难。我的问题是:我的方法很差,但在使用你的答案作为中间步骤后可能会起作用。所以我寻找更好的方法,这就是我问你问题的原因。@Rcoster
lappy(名称(lst),函数(x)cbind(lst[[x]],x))
?你为什么要这样做?谢谢阿难。我的问题是:我的方法很差,但在使用你的答案作为中间步骤后可能会起作用。所以我寻找更好的方法,这就是我问你问题的原因。@Rcoster
lappy(名称(lst),函数(x)cbind(lst[[x]],x))
?你为什么要这样做?谢谢阿难。我的问题是这样的:我的方法很差,但在使用你的答案作为中间步骤后可能会起作用。所以我想找一个更好的方法,这就是我问你问题的原因。@RcosterFunny不起作用的示例代码(
names(a)
应该是
names(lst)
,我想)当一个有效的答案没有得到任何结果时,得到了提升投票。嗯。我永远不会理解对堆栈溢出的投票。我忘了将我的测试变量更改为示例变量…他是新来的,给他一个机会!谢谢你们理解,我已经将名称(a)修改为名称(lst)当我测试代码时。有趣的是,示例代码不起作用(
names(a)
应该是
names(lst)
,我想)当一个有效的答案没有得到任何结果时,得到了提升投票。嗯。我永远不会理解对堆栈溢出的投票。我忘了将我的测试变量更改为示例变量…他是新来的,给他一个机会!谢谢你们理解,我已经将名称(a)修改为名称(lst)当我测试代码时。有趣的是,示例代码不起作用(
names(a)
应该是
names(lst)
,我想)当一个有效的答案没有得到任何结果时,得到了提升投票。嗯。我永远不会理解对堆栈溢出的投票。我忘了将我的测试变量更改为示例变量…他是新来的,给他一个机会!谢谢你们理解,我已经将名称(a)修改为名称(lst)当我测试代码时。有趣的是,示例代码不起作用(
names(a)
应该是
names(lst)
,我想)当一个有效的答案没有得到任何结果时,得到了向上投票。嗯。我永远不会理解对堆栈溢出的投票。我忘了将我的测试变量更改为示例变量…他是新来的,给他一个机会!谢谢你们理解,我在测试代码时将名称(a)修改为名称(lst)。