[問題] 將多個data frame放入list進行操作

看板R_Language作者 (raison detre)時間10年前 (2014/01/29 14:25), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串1/2 (看更多)
很抱歉又來問一些可能是很基礎的問題 我有五張相同格式的csv表 我想把他讀進來之計算之後 在每張表的最後多加兩個columns 所以我將他放進一個 list ( 我原本想用array,可是好像不行 ) 然後用一個迴圈去處理他 可是會出現以下的警告 Warning messages: 1: In df[i]$difftime <- difftime(dtTime, dtBase) : number of items to replace is not a multiple of replacement length 而且每張表好像都沒有被多加columns 請問我是有那裡弄錯了嗎 另外請問list與array的差別是? df = list( read.csv(file='worker05.csv', header=TRUE), read.csv(file='worker10.csv', header=TRUE), read.csv(file='worker15.csv', header=TRUE), read.csv(file='worker20.csv', header=TRUE), read.csv(file='worker25.csv', header=TRUE) ) for(i in 1:length(df)) { tmp <- substring( as.character(df[i]$time), 7,14) dtTime <- c(strptime( tmp, format="%H:%M:%S")) dtBase <- rep(dtTime[1], length(dtTime)) # 填入計算後的資料 df[i]$spentime <- difftime(dtTime, dtBase) df[i]$usage <- 100 - c(df[i]$idl) } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.26.236

01/29 15:11, , 1F
我的習慣是,先指定一個空list: df=list(NULL)
01/29 15:11, 1F

01/29 15:12, , 2F
接著 df[[i]]<-read.csv... 等
01/29 15:12, 2F

01/29 15:14, , 3F
喔喔,應該是df[[i]],不是df[i]。
01/29 15:14, 3F

01/29 15:14, , 4F
然後確認一下讀進來的不是matrix而是dataframe
01/29 15:14, 4F

01/29 15:56, , 5F
你要做的事情沒問題,可行
01/29 15:56, 5F

01/29 15:57, , 6F
問題應該是difftime之後長度改變,造成不一致
01/29 15:57, 6F

01/29 16:11, , 7F
data.frame要求所有column長度一致
01/29 16:11, 7F

01/29 18:07, , 8F
可以了,是 [[i]]的問題,我沒注意到不好意思
01/29 18:07, 8F

01/29 18:08, , 9F
R版還真是溫暖的板阿,熱心的人很多...謝謝囉
01/29 18:08, 9F
文章代碼(AID): #1Iw9xQJf (R_Language)
文章代碼(AID): #1Iw9xQJf (R_Language)