R 按列拆分数据帧
我想按列拆分数据帧。听起来微不足道,但到目前为止我还没有真正成功。 以下是我的想法:R 按列拆分数据帧,r,R,我想按列拆分数据帧。听起来微不足道,但到目前为止我还没有真正成功。 以下是我的想法: SG <- data.frame(num = 1:26, let = letters, LET = LETTERS) SG <- lapply(SG, function(x) split(x, colnames(SG))) str(SG) List of 3 $ num:List of 3 $ let:List of 3 $ LET:List of 3 SG您可以使用 lapply(col
SG <- data.frame(num = 1:26, let = letters, LET = LETTERS)
SG <- lapply(SG, function(x) split(x, colnames(SG)))
str(SG)
List of 3
$ num:List of 3
$ let:List of 3
$ LET:List of 3
SG您可以使用
lapply(colnames(SG), function(x) SG[,x,drop=F])
它返回一个具有结构的对象
List of 3
$ :'data.frame': 26 obs. of 1 variable:
..$ num: int [1:26] 1 2 3 4 5 6 7 8 9 10 ...
$ :'data.frame': 26 obs. of 1 variable:
..$ let: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
$ :'data.frame': 26 obs. of 1 variable:
..$ LET: Factor w/ 26 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...
在这种情况下,我们只是子集split()
对于data.frames,当您希望将行而不是列分隔为不同的组时,效果更好。您可以使用
lapply(colnames(SG), function(x) SG[,x,drop=F])
它返回一个具有结构的对象
List of 3
$ :'data.frame': 26 obs. of 1 variable:
..$ num: int [1:26] 1 2 3 4 5 6 7 8 9 10 ...
$ :'data.frame': 26 obs. of 1 variable:
..$ let: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
$ :'data.frame': 26 obs. of 1 variable:
..$ LET: Factor w/ 26 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...
在这种情况下,我们只是子集split()
对于data.frames,当您希望将行而不是列分隔为不同的组时,效果更好。这应该可以,行名称会保留。它返回数据帧列表:
SG <- lapply(SG, data.frame)
str(SG)
List of 3
$ num:'data.frame': 26 obs. of 1 variable:
..$ X..i..: int [1:26] 1 2 3 4 5 6 7 8 9 10 ...
$ let:'data.frame': 26 obs. of 1 variable:
..$ X..i..: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
$ LET:'data.frame': 26 obs. of 1 variable:
..$ X..i..: Factor w/ 26 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...
SG这应该有效,行名称被保留。它返回数据帧列表:
SG <- lapply(SG, data.frame)
str(SG)
List of 3
$ num:'data.frame': 26 obs. of 1 variable:
..$ X..i..: int [1:26] 1 2 3 4 5 6 7 8 9 10 ...
$ let:'data.frame': 26 obs. of 1 variable:
..$ X..i..: Factor w/ 26 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10 ...
$ LET:'data.frame': 26 obs. of 1 variable:
..$ X..i..: Factor w/ 26 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 ...
SG您希望的输出是什么?一列三个数据帧的列表?是的,完全正确。我想要一个数据帧列表,每个数据帧包含原始数据帧的一列,这样我可以在以后执行“list2env”您想要的输出是什么?一列三个数据帧的列表?是的,完全正确。我想要一个数据帧列表,每个数据帧包含原始数据帧的一列,这样我以后可以执行“list2env”谢谢!很简单,但是,colname没有被保留。不客气。这将检索(i in 1:length(SG))colnames(SG[[i]])的colnames:,谢谢!很简单,但是,colname没有被保留。不客气。这将检索(i in 1:length(SG))colnames(SG[[i]])的colnames:,谢谢!出于某些原因,list2env(SG,envir=.GlobalEnv)不在这里工作?谢谢!出于某些原因,list2env(SG,envir=.GlobalEnv)不在这里工作?