首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reshape2:将args传递给dcast

reshape2:将args传递给dcast
EN

Stack Overflow用户
提问于 2015-09-04 20:36:41
回答 1查看 746关注 0票数 1

我只希望能够为dcast (reshape2包)编写一个简单的包装器函数,以便能够读取文件、整形和写入不同的文件。缺点是我通常不会提前知道字段名,我只知道我想要前2列,还有第3列叫做“count”。我想要的函数是这样的。

代码语言:javascript
复制
function reshapeAndWrite(path, target)
{
    require(reshape2)

    data = read.csv(path)
    fields = colnames(data)
    data_reshape = dcast(data, fields[1] ~ fields[2], value.var = count)
    write.csv(data_reshape, target)
}

然而,dcast将fields1和fields2解释为字符串(即调用dcast(data," var1“~ "var2")而不是dcast(data,var1~ var2) )。如何传递列名。

我已经尝试过:as.name()、/as.symbol()和各种各样的组合,包括eval()、parse()、parse()和substitute()。

这个问题的答案可能也可以推广到哈德利宇宙中的其他软件包。

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-04 20:42:50

dcast的论点之一是“公式”。因此,作为中间步骤,您可以使用您的colname创建一个公式字符串,并将其放在对dcast的调用中:

代码语言:javascript
复制
data <- expand.grid(a=LETTERS[1:5],b=c("A","B"))
data$count=1:10

fields <- colnames(data)
casting_formula = sprintf("%s ~ %s", fields[1],fields[2])

dcast(data=data,value.var="count",formula=casting_formula)



  a A  B
1 A 1  6
2 B 2  7
3 C 3  8
4 D 4  9
5 E 5 10
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32406221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档