r - 数据框到结构化列表

标签 r list dataframe plyr

这是一个有趣的问题,我似乎找不到答案。让我直接开始吧。我需要获取一个从以下位置创建的数据框:

TPA <- ddply(MT,~plot,summarise,TPA=length(unique(tree.number))*50)
> TPA

plot  TPA
1   10A  700
2   10B 1000
3    1A  900
4    1B  950
5    2A  950
6    2B  650
7    3A  650
8    3B 1350
9    4A 1450
10   4B 1350
11   5A  850
12   5B 1100
13   6A 1050
14   6B  550
15   7A  850
16   7B  800
17   8A 2450
18   8B  950
19   9A 1150
20   9B 1000

并将其转换为:

y <- list(one=c(900,950), two=c(950,650), three=c(650,1350), four=c(1450,1350),     five=c(850,1100), six=c(1050,550), seven=c(850,800), eight=c(2450,950), nine=c(1150,1000), ten=c(700,1000))
> y
$one
[1] 900 950

$two
[1] 950 650

$three
[1]  650 1350

$four
[1] 1450 1350

$five
[1]  850 1100

$six
[1] 1050  550

$seven
[1] 850 800

$eight
[1] 2450  950

$nine
[1] 1150 1000

$ten
[1]  700 1000

请注意,数据帧中的 1A 对应于列表中的“一”。我知道如何以另一种方式从列表到数据框,但我不知道如何从数据框到列表。我有一个函数需要一个列表来输入该函数。为了完整起见,这里是使用列表的部分:

yi.bar <- unlist(lapply(y,mean))
s2i <- unlist(lapply(y,var))

有什么建议吗?

谢谢!

最佳答案

这是一个非常简单的分割操作 - 不需要附加包:

split(dat$TPA,as.numeric(gsub("[^0-9]","",dat$plot)))

#$`1`
#[1] 900 950
# 
#$`2`
#[1] 950 650
#
#$`3`
#[1]  650 1350
#...

如果有人考虑解决将数字转换为文本表示形式的任务,那么您已经被击败了:

http://socserv.mcmaster.ca/jfox/Papers/numbers2words.pdf

关于r - 数据框到结构化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18776127/

相关文章:

algorithm - 在将列表作为参数传递之前反转列表

python - 数据帧参数被函数更改。如何避免其变异?

python - pandas 按分钟比较时区感知日期时间字段

python - 将行转列,同时保持部分数据框完好无损

r - R中加权调查数据的瓦哈卡分解

r - 从 Excel 文件中清理结构奇怪的数据框(也欢迎任何有关函数的建议)

java - Arrays$ArrayList 无法在 java 中转换为 java.util.ArrayList

c++ - 为什么下面的代码会崩溃?

r - 使用和不使用 ggplot 的交互式 R Shiny 图

r - 将文本添加到与条件匹配的ggplot geom_jitter点