我是循环和R的新手。使用“iris”数据集我需要使用for()循环并创建一个名为“X.IQR”的对象,该对象包含前面四列“iris”中每一列的四分位数范围。有人可以在这里为我提供一些见解吗?谢谢!
编辑:抱歉忘了包含我的尝试
for(row in 1:150){
for(column in 1:4){
print(paste("row =",row,"; col =",column))
print(iris[1:150,1:4])
}
}
我在这里尝试过这段代码,这部分是我的知识,部分是我在课堂上学到的示例代码。我知道这是一个循环而且我认为我已经指定了前4列,因为我希望我只是不确定如何在这里引入IQR,任何人都有任何建议吗?
答案 0 :(得分:3)
如果您打算拥有所有行,那么在选择数据的子集时,您可以省略行选择:
iris[1:150,1:4]
变为
iris[ ,1:4]
理查德在评论中提到,你可以使用sapply:
X.IQR = sapply(X = iris[,1:4], FUN = IQR)
sapply
会将FUN
(函数)IQR
应用于iris数据集的每个元素,该元素对应于其列。
或使用apply:
X.IQR = apply(X = iris[ ,1:4], 2, FUN = IQR)
apply
可以做同样的事情,但它的代码更多,并且不会一直保持干净。
在此处阅读更多优秀回复:R Grouping functions: sapply vs. lapply vs. apply. vs. tapply vs. by vs. aggregate