R 是否可以直接向cast()提供值?

R 是否可以直接向cast()提供值?,r,reshape,R,Reshape,我想向cast()函数提供一些从数据帧派生的值,而不必实际将其保存在data.frame中。据我所知,我必须这样做: df$value <- ifelse(df$x > 0, 1, 0) cast(df, row ~ col, value = "value") 但这不起作用。有什么想法吗 我可以这样做: cast(cbind(df, list(value = ifelse(df$x > 0, 1, 0))), row ~ col, value = "value") 但是感觉

我想向
cast()
函数提供一些从数据帧派生的值,而不必实际将其保存在
data.frame
中。据我所知,我必须这样做:

df$value <- ifelse(df$x > 0, 1, 0)
cast(df, row ~ col, value = "value")
但这不起作用。有什么想法吗

我可以这样做:

cast(cbind(df, list(value = ifelse(df$x > 0, 1, 0))), row ~ col, value = "value")
但是感觉有点笨拙

编辑:我发现上述笨拙的解决方案可以简化:

cast(cbind(df, value = ifelse(df$x > 0, 1, 0)), row ~ col)

不过仍然有笨拙黑客的味道。

cast
不受欢迎。您应该使用
dcast
。另外,
value.var
不能接受表达式,它只是在
names(df)
@agstudy 1)中需要一个或多个值。
cast
未被弃用。
restrape
restrape2
仍保持不变,可以从两者中进行选择。如果您不同意,请引用官方资料2)如果您知道答案,您可以自由发布
dcast
解决方案,但恐怕它也有相同的限制。为什么不提供一些示例数据,以便每个人都可以轻松测试想法?@TMS,为什么是官方资料?我不是代码维护者。可能软件包仍在维护中,但这里的人通常使用
reformae2
。使用dcast的解决方案:
dcast(transform(df,value=ifelse(x>0,1,0)),row~col,value.var=“value”)
@agstudy,1)如果您声明的内容像“cast不推荐使用,您应该使用dcast”这样强烈,这根本不是真的。在没有官方消息来源的情况下,你不应该散布这样的言论。如果你说“这里的人通常使用整形2”,那就好多了。2) 这几乎和我贴的一样,谢谢你的
transform
,不过它更优雅了!
cast(cbind(df, value = ifelse(df$x > 0, 1, 0)), row ~ col)