在R中:当我使用Assign函数将数字分配给变量,然后使用get函数时,输出不包含原始变量名称

问题描述 投票:0回答:1

这里是问题的详细信息:

考虑

z=data.frame(x=c(1,2,3))

将名称保存在数据框中。

names=names(z)

数据框仅包含一个名称。

names[1]

现在我将数据框中第一列的值分配给数据框中的名称。

assign(names[1],z[,1])

问题是,当我使用get函数进行某些测试时,输出在数据框中不包含原始名称,

shapiro.test(get(names[1]))

我得到的输出是:

    Shapiro-Wilk normality test

数据:获取(名称[1])

W = 1,p值= 1

r
1个回答
0
投票

这将为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$xz[["x"]]z["x"]

您可以做的另一件事是使用withwithintransform。第一个返回一个等于2 * x的向量,接下来的两个返回一个其中x已经加倍的数据帧。

with(z, 2 * x)

within(z, x <- 2 * x)
transform(z, x = 2 * x)
© www.soinside.com 2019 - 2024. All rights reserved.