Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R如何在代码中引用宏变量,使其成为新数据集名称的一部分_R - Fatal编程技术网

R如何在代码中引用宏变量,使其成为新数据集名称的一部分

R如何在代码中引用宏变量,使其成为新数据集名称的一部分,r,R,在sas中,宏变量的前缀是&,在stata中,它们的前缀是`。 如何在R中引用宏变量?这两个都运行时没有错误,但由于我无法将圆柱体编号作为创建的数据集名称的一部分,因此当我第二次运行它时,它会覆盖第一次 我想要两个数据集,x6和x8 mtcarsdf <- data.frame(mtcars) bycyl <- defmacro(df, cylnum, expr={ xcyclnum <-

在sas中,宏变量的前缀是&,在stata中,它们的前缀是`。 如何在R中引用宏变量?这两个都运行时没有错误,但由于我无法将圆柱体编号作为创建的数据集名称的一部分,因此当我第二次运行它时,它会覆盖第一次

我想要两个数据集,x6和x8

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是list
split(mtcarsdf,mtcarsdf$cyl)
,它将数据集拆分为R中更易于使用的命名列表。不要试图逐行将代码从一种语言翻译成另一种语言,这一点很重要。R是一种函数式编程语言,因此这种风格的正确代码看起来与其他语言的声明性代码非常不同。如果您真的只想要这两个柱面值,您可以使用基面R执行
lappy(c(6,8),function(n)subset(mtcarsdf,cyl==n,select=(-c(carb,gear,am,vs))
,获取值列表而不是单独的变量。