z=data.frame(x=c(1,2,3))
names=names(z)
names[1]
assign(names[1],z[,1])
shapiro.test(get(names[1]))
我得到的输出是:
Shapiro-Wilk normality test
数据:获取(名称[1])
W = 1,p值= 1
这将为z
中的每一列创建一个一列数据框>
for(nm in names(z)) assign(nm, z[nm])
或这两个都将为
z
中的每一列创建一个向量。for(nm in names(z)) assign(nm, z[[nm]]) list2env(z, .GlobalEnv)
这将在搜索列表上创建一个条目,其中包含
z
中每一列的向量,而无需将它们放在全局环境中,因此您现在可以仅引用x
。attach(z)
请注意,以上所有内容通常都不代表良好的编程习惯,根据您的需要,最好仅引用
z$x
,z[["x"]]
或z["x"]
。您可以做的另一件事是使用
with
,within
或transform
。第一个返回一个等于2 * x
的向量,接下来的两个返回一个其中x已经加倍的数据帧。
with(z, 2 * x)
within(z, x <- 2 * x)
transform(z, x = 2 * x)