R 在矩阵上调用apply()会遍历元素而不是行?

R 在矩阵上调用apply()会遍历元素而不是行?,r,apply,R,Apply,考虑一个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

考虑一个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
将迭代分解为一个列表而不是列表列表?

您没有指定apply的
MARGIN
参数,该参数必须在函数声明之前

例如:

set.seed(5)
enum <- matrix(data=c(1:5, runif(5)*100), ncol=2)
apply(enum, 1, function(y) { print(y) })

您的代码不清楚您正在使用
apply
执行什么操作。
apply
的第二个参数应该是边距(1=行,2=列,c(1,2)=两者,或者如果维度被命名,则是一个字符向量)。啊,好的-我错过了那个参数-并且
R
元组中提取了它!动态键入的乐趣非常有趣的是,
R
提取了矩阵的一个元素,以提供
margin
参数。为什么不直接抛出一个错误。。?
> 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