【发布时间】:2015-11-26 07:26:19
【问题描述】:
我定义了一个 R 函数,它接受 2 个字符串作为输入,并返回 10 列作为输出。用一个示例函数来解释这个问题 -
func.ret.10.cols = function(x,y) {
# process strings ... yada yada
.....
# process strings ... yada yada
return ( cbind(1,2,3,4,5,6,7,8,9,10))
}
用数据框测试这个 -
> df1
V1 V2
1 741 zulu zulu street 71 15 41 510741 741 14 21 zulu zulu street 71 510742
2 741 zulu zulu street 71 15 41 510741 741 14 21 zulu zulu street 71 510742
> str(df1)
'data.frame': 2 obs. of 2 variables:
$ V1: chr "741 zulu zulu street 71 15 41 510741" "741 zulu zulu street 71 15 41 510741"
$ V2: chr "741 14 21 zulu zulu street 71 510742" "741 14 21 zulu zulu street 71 510742"
>
现在当我调用这个函数时,我希望得到 10 列和 2 行的输出。但是我总是得到 2 列和 10 行。
> apply(df1[,c('V1','V2')], 1, function(x) func.ret.10.cols(x[1],x[2]))
1 2
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 4 4
[5,] 5 5
[6,] 6 6
[7,] 7 7
[8,] 8 8
[9,] 9 9
[10,] 10 10
> mapply(function(x,y) func.ret.10.cols(x,y), df1$V1, df1$V2)
741 zulu zulu street 71 15 41 510741 741 zulu zulu street 71 15 41 510741
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 4 4
[5,] 5 5
[6,] 6 6
[7,] 7 7
[8,] 8 8
[9,] 9 9
[10,] 10 10
我也试过 as.data.frame(cbind(1,2,3....)),但还是一样。 有什么我想念的吗。
虽然使用 t(apply(...) 很容易,但我只想知道我忽略了什么。
谢谢, 马尼什
【问题讨论】: