我正在尝试编写一个函数,它允许我(A)创建一个以函数中的参数命名的data.frame
。(B)这个data.frame
需要是一个更大的data.frame
(这里是df
)的子集。最后,我需要能够将函数中的object/data.frame
保存为可打印的(等) data.frame
。
举个例子。
Group <- c("Primary Group","Primary Group","Primary Group","Primary Group","Primary Group","Primary Group","Secondary Group","Secondary Group","Secondary Group","Secondary Group","Secondary Group","Secondary Group","Tertiary Group","Tertiary Group","Tertiary Group","Tertiary Group","Tertiary Group","Tertiary Group")
Day <- c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
Type <- c("A","A","A","B","B","B","A","A","A","B","B","B","A","A","A","B","B","B")
Value <- c(7,3,10,3,9,4,0,9,3,10,1,6,3,4,10,2,3,1)
df<-as.data.frame(cbind(Group,Day,Type,Value))
Test_Function <- function(Group_Name, Type_Name){
paste(Group_Name,Type_Name) <- df[(df$Group == Group_Name] & (df$Type == Type_Name),]
}
理想情况下
Test_Function("Secondary Group","A")
将仅返回名为"Secondary Group A"
的已保存的可用data.frame
中的第7-9行。
谢谢!任何帮助都是令人惊叹的。
发布于 2018-06-06 13:17:41
您的数据集有一个问题。您的主要组值由两个单独的单词组成。然后,它将不能用于命名一个对象(据我所知)
然后,如果您更改名称,使之成为一个单词(我在下面向您展示,但仅更改示例的第一个单词,我假设您有一个更长的数据集,因此您可能必须在R中执行此操作)
Group <- c("Primary_Group","Primary_Group","Primary_Group","Primary_Group","Primary_Group","Primary_Group","Secondary Group","Secondary Group","Secondary Group","Secondary Group","Secondary Group","Secondary Group","Tertiary Group","Tertiary Group","Tertiary Group","Tertiary Group","Tertiary Group","Tertiary Group")
Day <- c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3)
Type <- c("A","A","A","B","B","B","A","A","A","B","B","B","A","A","A","B","B","B")
Value <- c(7,3,10,3,9,4,0,9,3,10,1,6,3,4,10,2,3,1)
df<-as.data.frame(cbind(Group,Day,Type,Value))
然后,下面的函数将完成此工作:
SelFun <- function(Data, Group,Type){
df <- Data[Data$Group== Group & Data$Type== Type, ]
assign(paste(Group,Type,sep = ''), df, envir = parent.frame())
}
示例:
SelFun(df, 'Primary_Group', 'A')
将创建一个名为Primary_GroupA的data.frame,它将显示选定的行
> Primary_GroupA
Group Day Type Value
1 Primary_Group 1 A 7
2 Primary_Group 2 A 3
3 Primary_Group 3 A 10
https://stackoverflow.com/questions/50709940
复制相似问题