R如何在代码中引用宏变量,使其成为新数据集名称的一部分
在sas中,宏变量的前缀是&,在stata中,它们的前缀是`。 如何在R中引用宏变量?这两个都运行时没有错误,但由于我无法将圆柱体编号作为创建的数据集名称的一部分,因此当我第二次运行它时,它会覆盖第一次 我想要两个数据集,x6和x8R如何在代码中引用宏变量,使其成为新数据集名称的一部分,r,R,在sas中,宏变量的前缀是&,在stata中,它们的前缀是`。 如何在R中引用宏变量?这两个都运行时没有错误,但由于我无法将圆柱体编号作为创建的数据集名称的一部分,因此当我第二次运行它时,它会覆盖第一次 我想要两个数据集,x6和x8 mtcarsdf <- data.frame(mtcars) bycyl <- defmacro(df, cylnum, expr={ xcyclnum <-
mtcarsdf <- data.frame(mtcars)
bycyl <- defmacro(df, cylnum,
expr={
xcyclnum <- subset(df, cyl==cylnum, select=(-c(carb, gear, am, vs)))
})
bycyl(mtcarsdf,6)
bycyl(mtcarsdf,8)
mtcarsdf R不使用宏。它使用适当的元编程。此外,在全局环境中创建“松散”变量并以其名称包含数据也不是一种好形式。这样做的更好方法是R是listsplit(mtcarsdf,mtcarsdf$cyl)
,它将数据集拆分为R中更易于使用的命名列表。不要试图逐行将代码从一种语言翻译成另一种语言,这一点很重要。R是一种函数式编程语言,因此这种风格的正确代码看起来与其他语言的声明性代码非常不同。如果您真的只想要这两个柱面值,您可以使用基面R执行lappy(c(6,8),function(n)subset(mtcarsdf,cyl==n,select=(-c(carb,gear,am,vs))
,获取值列表而不是单独的变量。