Re: [問題] for迴圈不會寫
這用 tapply 就可以直接解,像這樣:
tapply(iris$Petal.Length, iris$Species, mean)
不過如果是要練習 for loop,
以下給一個初學者容易理解的解法。
# 初始化一個 list,並給名字。
ans <- vector("list", length(levels(iris$Species)))
names(ans) <- levels(iris$Species)
# 利用 names(ans) 來當 for loop 裡的變數
for(i in names(ans)){
which.row <- which(iris$Species == i)
ans[[i]] <- mean(iris$Petal.Length[which.row])
}
# 結果如下
print(ans)
※ 引述《anyonred (任意紅)》之銘言:
: 題目是
: # 請計算Petal.Length在三種Species的平均值
: # 請將三種結果分別存到一個named list之中
: # list elements 的名稱對應到類別,包含的值則代表對應的Species在Petal.Length的
: 平均值
: # 可以參考後面`stopifnot`的提示
: answer2 <- local({
: for name in names(iris$Species){iris$Species(name)<-mean(Petal.length(name))
: })
: (上面這段是我自己寫的,但我不清楚我錯在哪裡,希望有人可以跟我說下)
: stopifnot(is.list(answer2))
: stopifnot(length(answer2) == 3)
: stopifnot(names(answer2) == c("setosa", "versicolor", "virginica"))
: local({
: for(name in unique(iris$Species)) {
: stopifnot(is.numeric(answer2[[name]]))
: stopifnot(length(answer2[[name]]) == 1)
: }
: })
: 其實stopifnot我看沒有懂,我初學dataframe一段時間 ,希望有人可以教我寫這題
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.110.74
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1490110256.A.AE7.html
→
03/22 06:40, , 1F
03/22 06:40, 1F
→
03/22 06:40, , 2F
03/22 06:40, 2F
→
03/22 15:38, , 3F
03/22 15:38, 3F
→
03/22 17:58, , 4F
03/22 17:58, 4F
→
03/22 18:00, , 5F
03/22 18:00, 5F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章