2012-07-28 57 views
2

在这里从一数据帧2组的列是数据:制作列表,并在r中

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

我觉得这会给你想要的东西:

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 
+0

+ 1一个正确的假设和甜蜜的答案 – rdorlearn 2012-07-28 14:51:57