如何使用R中的重塑函数引用已定义的对象?

如何使用R中的重塑函数引用已定义的对象?,r,reshape,R,Reshape,我无法使整形函数stats::restrape在其一个参数中接受对已定义字符向量的引用。我不知道这是否反映了我的语法错误、函数的局限性,或者是与R本身如何运行有关的更普遍的问题 我正在使用重塑将数据从宽格式更改为长格式。我有一个数据集,其中包含许多重复的度量值,这些度量值被适当地排序,用于重塑x.1、x.2、x.3、y.1、y.2、y.3、,等等。我定义了一个变量firstlastmeasure,它包含重复度量数据的第一列和最后一列的索引,这些数据需要通过重塑来处理。这是为了防止每次从原始数据中

我无法使整形函数stats::restrape在其一个参数中接受对已定义字符向量的引用。我不知道这是否反映了我的语法错误、函数的局限性,或者是与R本身如何运行有关的更普遍的问题

我正在使用重塑将数据从宽格式更改为长格式。我有一个数据集,其中包含许多重复的度量值,这些度量值被适当地排序,用于重塑x.1、x.2、x.3、y.1、y.2、y.3、,等等。我定义了一个变量firstlastmeasure,它包含重复度量数据的第一列和最后一列的索引,这些数据需要通过重塑来处理。这是为了防止每次从原始数据中添加或删除列时都必须更改索引

这是如何以复杂的方式定义的:

temp0 <- subset(p, select=nameoffirstcolumn:nameoflastcolumn)
lastmeasname = names(temp0[ncol(temp0)])
firstmeasname = names(temp0[1])
firstmeasindex = grep(firstmesname,colnames(p))
lastmeasindex = grep(lastmesname,colnames(p))
firstlastmeasure <- paste(firstmesindex,lastmesindex,sep=":")
重塑始终返回:

GuessVariable中出错:未能从名称中猜测时变变量

明确使用数值指数,即变化=6:34,效果良好

粘贴创建一个字符串,如果您查看firstlastmasure,它将类似于6:34。如果你看6:34,它将是一个向量6789。。。34您需要定义向量,而不是将字符串粘贴在一起。请注意,子集会进行一些特殊处理:处理列名

如果我对您的代码进行了正确的interepreting,temp0包含了您想要的所有列,因此您可以这样做

firstlastmeasure = names(temp0)
就这样吧。稍微复杂一点,您可以保留grep代码,而不使用粘贴:

由于您正在输入名称,因此不需要子集。最简单的方法是跳过temp0并执行


你能让你的例子重现吗?分享足以说明问题的数据?此外,整形2包中没有名为整形的函数。Reforme2的主要功能是熔化、浇铸、dcast和重铸。我假设您使用的是内置的stats::Reforme。请提供定义firstlastmeasure的代码。听起来您没有正确使用Variable参数,从?stats::Reforme,Variable被描述为宽格式变量集的名称[或索引],对应于长格式的单个变量。我不是从你对firstlastmeasure的描述中得到的。代替索引到重复测量的第一列和最后一列,您可以先执行索引到第一列:索引到最后一列吗?对不起,这实际上是内置的重塑函数,我已经解决了这个问题。@Gregor,这确实有效,谢谢!因此,就我定义的对象而言,它是:variang=firstmeasindex:lastmasindex起作用的
firstlastmeasure = names(temp0)
firstlastmeasure = firstmeasindex:lastmeasindex
firstlastmeasure = grep(nameoffirstcolumn, names(p)):grep(nameoflastcolumn, names(p))