使用自定义名称在 R 中创建动态数据框 [英] Dynamic data frame creation in R with custom names
本文介绍了使用自定义名称在 R 中创建动态数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想动态创建数据框并为其分配自定义名称.
I'd like to create data frames dynamically and assign custom names to it.
我有一个这样的主数据集:
I have a master data set like this:
ID grp val1 val2
1 a 32 9
1 b 21 31
1 c 43 76
2 a 23 67
2 b 5 45
2 c 65 76
3 a 43 34
3 b 43 7
3 c 12 87
4 a 43 35
4 b 65 87
4 c 21 55
我想创建像
data1:
ID grp val1 val2
1 a 32 9
1 b 21 31
1 c 43 76
data2:
ID grp val1 val2
2 a 23 67
2 b 5 45
2 c 65 76
等等...
我尝试过一些类似的事情:
I have tried some things like:
myID<-1:4
df <- paste('data',myID, sep ='')
ll <- sapply(df, function(x)
{
data.frame ()
df<-masterData[which(masterData$ID==myID),]
})
没有预期结果的另一次尝试:
Another try without desired results:
sapply(myID,function(x) df<-as.data.frame(masterData[which(masterData$ID==myID,]))
我猜子集不会对多个值这样做:
I guess subset will not do it for multiple values:
myframes<-list(subset(masterData,masterData$ID==myID))
推荐答案
我只想使用 split
并将它们全部保存在 list
中:
I would just use split
and keep them all in a list
:
split(masterData, masterData$ID)
# $`1`
# ID grp val1 val2
# 1 1 a 32 9
# 2 1 b 21 31
# 3 1 c 43 76
#
# $`2`
# ID grp val1 val2
# 4 2 a 23 67
# 5 2 b 5 45
# 6 2 c 65 76
#
# $`3`
# ID grp val1 val2
# 7 3 a 43 34
# 8 3 b 43 7
# 9 3 c 12 87
#
# $`4`
# ID grp val1 val2
# 10 4 a 43 35
# 11 4 b 65 87
# 12 4 c 21 55
如果你真的想用大量的 data.frame
在你的工作场所乱扔垃圾,而不是把所有东西都放在一个整洁的 list
中,你可以使用 list2env代码>:
If you really want to litter your workplace with lots of data.frame
s, instead of keeping everything in a tidy list
, you can use list2env
:
X <- split(masterData, masterData$ID)
names(X) <- paste0("data", names(X))
list2env(X, envir=.GlobalEnv)
# <environment: R_GlobalEnv>
ls(pattern = "^data[0-9]$") ## What did that create?
# [1] "data1" "data2" "data3" "data4"
data1
# ID grp val1 val2
# 1 1 a 32 9
# 2 1 b 21 31
# 3 1 c 43 76
这篇关于使用自定义名称在 R 中创建动态数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文