R: ddply only returns 矩阵列的第一列
R: ddply only returns first column of matrix column
我有一个 data.frame D
,其中一些列是矩阵,例如
> head(round(D$equationRTs, 1))
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 2.9 2.1 3.2 3.5 NA NA NA
[2,] 2.8 NA NA NA NA NA NA
[3,] 3.4 2.4 NA NA NA NA NA
[4,] 2.7 2.9 1.9 NA NA NA NA
[5,] 3.6 2.6 2.4 2.4 3.4 2.8 NA
[6,] 2.4 2.0 3.3 2.8 2.8 2.6 3.6
...
> dim(D$equationRTs)
[1] 11277 7
> typeof(D$equationRTs)
[1] "double"
但是,当我对 D
:
进行 ddply
子集时
my_function = function(df) {
# Let's see what ddply passes to this function:
print(head(round(df$equationRTs, 1)))
print(dim(df$equationRTs))
print(typeof(df$equationRTs))
}
D = ddply(D, .(id), my_function)
似乎只有第一列作为向量传递给 my_function
:
[1] 2.9 2.8 3.4 2.7 3.6 2.4
NULL
[1] "double"
第 2-6 列刚刚消失。这是怎么回事,当子集传递给 my_function
?
时,如何使矩阵列保持完整
奖金:似乎 ddply 正在做类似 D$equationRTs[id==x]
的事情,它确实 returns 矩阵的第一列,而 D$equationRTs[id==x, ]
returns 矩阵。
您可以简单地手动编码 ddply
做什么(或应该做什么...)。
所以替换旧的
D = ddply(D, .(id), my_function)
和
for(id in levels(D$id)) {
D[D$id == id, ] = check_quality(D[D$id == id, ])
}
手动版本具有所需的行为。
我有一个 data.frame D
,其中一些列是矩阵,例如
> head(round(D$equationRTs, 1))
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 2.9 2.1 3.2 3.5 NA NA NA
[2,] 2.8 NA NA NA NA NA NA
[3,] 3.4 2.4 NA NA NA NA NA
[4,] 2.7 2.9 1.9 NA NA NA NA
[5,] 3.6 2.6 2.4 2.4 3.4 2.8 NA
[6,] 2.4 2.0 3.3 2.8 2.8 2.6 3.6
...
> dim(D$equationRTs)
[1] 11277 7
> typeof(D$equationRTs)
[1] "double"
但是,当我对 D
:
ddply
子集时
my_function = function(df) {
# Let's see what ddply passes to this function:
print(head(round(df$equationRTs, 1)))
print(dim(df$equationRTs))
print(typeof(df$equationRTs))
}
D = ddply(D, .(id), my_function)
似乎只有第一列作为向量传递给 my_function
:
[1] 2.9 2.8 3.4 2.7 3.6 2.4
NULL
[1] "double"
第 2-6 列刚刚消失。这是怎么回事,当子集传递给 my_function
?
奖金:似乎 ddply 正在做类似 D$equationRTs[id==x]
的事情,它确实 returns 矩阵的第一列,而 D$equationRTs[id==x, ]
returns 矩阵。
您可以简单地手动编码 ddply
做什么(或应该做什么...)。
所以替换旧的
D = ddply(D, .(id), my_function)
和
for(id in levels(D$id)) {
D[D$id == id, ] = check_quality(D[D$id == id, ])
}
手动版本具有所需的行为。