阻止申请退回矢量?

时间:2015-05-15 03:42:10

标签: r apply

我通过一系列看起来像下面代码的apply()调用来运行大量具有可变维度的数据框。

df1 = t(data.frame('test'=c(0,0,1,0)))
df1 = apply(df1,2,function(j){sub(0,'00',j)})
df1 = apply(df1,2,function(j){sub(1,'01',j)})
df1 = apply(df1,2,function(j){sub(2,'10',j)})
df1

在数据帧大小为1xn的极少数情况下,第一次apply()调用将导致它返回向量数据类型并导致后续应用时出错。请注意,1xn数据帧似乎不会出现此问题(在上面的代码中,删除t())。有没有快速/干净的方法来阻止apply()返回向量或其他有效的解决方法来解决这个问题?

我认为当1xn但没有nx1数据帧用作输入时,以下内容可能有用。

df1 = apply(df1,1,function(j){sub(0,'00',j)})
df1 = apply(df1,2,function(j){sub(1,'01',j)})
df1 = apply(df1,2,function(j){sub(2,'10',j)})
t(ret)

1 个答案:

答案 0 :(得分:0)

以下保留原始数据结构。它是什么寻找的?

df = data.frame('test'=c(0,0,1,0))
df[] <- apply(df,2,function(j){sub(0,'00',j)})
df[] <- apply(df,2,function(j){sub(1,'01',j)})
df[] <- apply(df,2,function(j){sub(2,'10',j)})
df
#   test
# 1   00
# 2   00
# 3   01
# 4   00

df1 = t(data.frame('test'=c(0,0,1,0)))
df1[] <- apply(df1,2,function(j){sub(0,'00',j)})
df1[] <- apply(df1,2,function(j){sub(1,'01',j)})
df1[] <- apply(df1,2,function(j){sub(2,'10',j)})
df1
# [,1] [,2] [,3] [,4]
# test "00" "00" "01" "00"