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