这是数据:
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 列。有什么解决办法吗?
最佳答案
我认为这会给你你想要的:
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
关于r - 从 r 中的数据帧中制作大小为 n/2 和 2 列的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11701817/