2

这是数据:

myd <- data.frame (var1.1 = rnorm (10, 5,2), var1.2 = rnorm (10, 3,1),
                   varA.1 = rnorm (10, 5,2), varA.2 = rnorm (10,1,2), 
                    C.1 = rnorm (10, 3,1), C.2 = rnorm (10, 4,1))

我想创建一个大小为 3 的列表(n/2,如果 n 是数据框中的变量数)(每列有两列)

mylist <- as.list (myd)

创建一个列表,其中每个变量作为组件。但我想在一个单元中创建一对变量列表 - var1.1 和 var1.2,类似地 varA.1 和 varA.2 或 C.1 和 C.2。因此,新的列表单元每个有 2 列。有什么解决办法吗?

4

1 回答 1

4

我认为这会给你你想要的:

lapply(seq(2, ncol(myd), by = 2), function(i) myd[, (i-1):i])

现在假设您想通过数据框的共享变量名称来命名列表中的每个元素:

X <- lapply(seq(2, ncol(myd), by = 2), function(i) myd[, (i-1):i])
names(X) <- sapply(X, function(x){
    strsplit(names(x)[1], '\\.')[[c(1, 1)]]
})
X
于 2012-07-28T14:33:31.377 回答