R 将键值数据帧转换为列表
这就是我的结构类型。数据帧中有几千行,其结构与以下类似:R 将键值数据帧转换为列表,r,list,dataframe,lapply,R,List,Dataframe,Lapply,这就是我的结构类型。数据帧中有几千行,其结构与以下类似: vct_names <- c("apples", "apples", "grapes", "apples", "grapes") vct_codes <- c(23, 35, 123, 43, 156) df_values <- data.frame(names = vct_names, codes = vct_codes) vct\u name拆分功能正是为此而设计的。它在数据帧和向量上都起作用。它通过作为泛型函数来
vct_names <- c("apples", "apples", "grapes", "apples", "grapes")
vct_codes <- c(23, 35, 123, 43, 156)
df_values <- data.frame(names = vct_names, codes = vct_codes)
vct\u name拆分功能正是为此而设计的。它在数据帧和向量上都起作用。它通过作为泛型函数来实现这种多态行为
> methods(split)
[1] split.data.frame split.data.table* split.Date split.default
[5] split.IDate* split.POSIXct split.zoo*
see '?methods' for accessing help and source code
因此,这将更加经济:
> lst_values <- split(vct_codes, vct_names)
> lst_values
$apples
[1] 23 35 43
$grapes
[1] 123 156
>lst\u值lst\u值
美元苹果
[1] 23 35 43
美元葡萄
[1] 123 156
在本例中,我们使用的是split.default
。有时,打印代码会提供信息,但在这种情况下,我们只看到在将数据和参数传递给之前对边缘情况的一些初步操作。内部(拆分(沿(x),f))
这是一种美!我们需要在lappy()中嵌套split()吗split(df_值,df_值$names)似乎工作得很好。split()
将data.frame拆分为多个数据。frame在一个列表中,因此需要迭代每个data.frame并只提取lappy不需要的一列值。split函数将处理向量并返回命名列表。更不用说split+lappy=?by
> methods(split)
[1] split.data.frame split.data.table* split.Date split.default
[5] split.IDate* split.POSIXct split.zoo*
see '?methods' for accessing help and source code
> lst_values <- split(vct_codes, vct_names)
> lst_values
$apples
[1] 23 35 43
$grapes
[1] 123 156