r - 如何在保留列名的同时将矩阵的列巧妙地列出到数据框中?
问题描述
假设我们有一个矩阵M
。
# n1 n2 n3 n4
# m1 1 4 7 10
# m2 2 5 8 11
# m3 3 6 9 12
为了列出"data.frames"
我们可以做的列:
apply(M, 2, data.frame)
但是,列出的数据框具有奇怪且相同的列名,例如:
# $n1
# newX...i.
# m1 1
# m2 2
# m3 3
同样的事情lapply
:
lapply(data.frame(M), data.frame)
# $n1
# X..i..
# 1 1
# 2 2
# 3 3
到目前为止,我发现获得预期输出的唯一方法是:
lapply(1:ncol(M), function(x) setNames(data.frame(M[,x]), colnames(M)[x]))
# [[1]]
# n1 ## <-- expected col names!
# m1 1
# m2 2
# m3 3
结果出乎意料地麻烦。我可能错过了一个更简单的基本功能吗?
数据
M <- structure(1:12, .Dim = 3:4, .Dimnames = list(c("m1", "m2", "m3"
), c("n1", "n2", "n3", "n4")))
解决方案
一种选择可能是(综合我的原始帖子和@H 1 的建议):
split.default(data.frame(M), colnames(M))
它具有以下结构:
List of 4
$ n1:'data.frame': 3 obs. of 1 variable:
..$ n1: int [1:3] 1 2 3
$ n2:'data.frame': 3 obs. of 1 variable:
..$ n2: int [1:3] 4 5 6
$ n3:'data.frame': 3 obs. of 1 variable:
..$ n3: int [1:3] 7 8 9
$ n4:'data.frame': 3 obs. of 1 variable:
..$ n4: int [1:3] 10 11 12
推荐阅读
- eclipse - 如何隐藏编译器信息标记或更改问题严重性?
- r - 如何组合具有相似结构和匹配命名元素的表列表?
- python - 将线图与熊猫中的水平条形图重叠
- python - 来自字符串的变量名
- mysql - 使用一个分隔符将不同的内容从一列复制到另一列
- regex - 正则表达式匹配一个单词,但前提是它前面或后面没有另一个特定的单词
- api - PySpark 把数据放到 https
- android - “位置提供程序需要 ACCESS_FINE_LOCATION 权限”即使我使用运行时请求权限
- android - 无法使用 FusedLocationApi 离线获取位置(没有 Wifi 或移动网络)
- macos - 是否可以在不使用 C++ 编写设备驱动程序的情况下在 OS X 上读取/写入 USB 设备?