iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 7
0
AI & Data

R語言 - 從「主觀感覺」轉為「客觀事實」系列 第 7

R語言_給人看的程式碼_運算data.frame()時即便迴圈,也不要用數字123

  • 分享至 

  • xImage
  •  

大部分的時候,為了方便我們會在自己用的data.frame中取數字運算,例如把iris要算的Sepal.Length第一項道第十項乘以二,大部分的人都是直接取值[1:10,1],但別人閱讀起來就相對困難。

iris_test = iris 
iris_test[1:10,1]
iris_test[1:10,1] * 2 

https://ithelp.ithome.com.tw/upload/images/20190922/20111603uWT495kegW.png
希望至少能寫成這樣

iris_test$Sepal.Length[1:10]

https://ithelp.ithome.com.tw/upload/images/20190922/20111603g6trOIh6k3.png
但通常有一種狀況大家會選擇用數字代替,就是寫迴圈的時候,這邊想
如果是迴圈情形的時候

我今天想要把iris這個資料集的第一行第三行第四行都乘以2的時候,我以前也會寫成

for(i in c(1,3:4))
  iris_test[,i] = iris_test[,i] * 2

這邊推薦一個方法,用select ,把你要運算的列名稱列舉出來

select(iris_test,Sepal.Length,Petal.Length,Petal.Width) %>% colnames()

https://ithelp.ithome.com.tw/upload/images/20190922/20111603IcTnv4BqKa.png
這樣的話你再跑for迴圈,把c(1,3:4)取代掉,非常重要的一點,就是要把[,i]改成[[i]]這樣才能吃列名稱。

for(i in select(iris_test,Sepal.Length,Petal.Length,Petal.Width) %>% colnames())
  iris_test[[i]] = iris_test[[i]] * 2

上一篇
R語言_資料最初步的判斷
下一篇
R語言_目標編碼
系列文
R語言 - 從「主觀感覺」轉為「客觀事實」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言