考虑一个2列矩阵enum
:
Browse[2]> class(enum)
[1] "matrix"
以下是enum
Browse[2]> enum
x
pregnant 1 6.000
glucose 2 148.000
diastolic 3 72.000
skin 4 35.000
insulin 5 0.000
bmi 6 33.600
pedigree 7 0.627
age 8 50.000
目的是迭代行:尝试这样做是:
apply(enum, function(y) {
其中y
一次代表一行。
但是y
正在成为单个元素而不是整行:
Browse[2]> y
[1] 1
为什么apply
的迭代被分解为单个列表而不是列表列表?
答案 0 :(得分:1)
你没有在函数声明之前指定应用的MARGIN
参数。
示例:
set.seed(5)
enum <- matrix(data=c(1:5, runif(5)*100), ncol=2)
apply(enum, 1, function(y) { print(y) })
输出:
> apply(enum, 1, function(y) { print(y) })
[1] 1.00000 20.02145
[1] 2.00000 68.52186
[1] 3.00000 91.68758
[1] 4.00000 28.43995
[1] 5.00000 10.46501
[,1] [,2] [,3] [,4] [,5]
[1,] 1.00000 2.00000 3.00000 4.00000 5.00000
[2,] 20.02145 68.52186 91.68758 28.43995 10.46501