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

作者: ireullin (raison detre)   2014-01-29 14:25:27
很抱歉又來問一些可能是很基礎的問題
我有五張相同格式的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)
}
作者: ching0629 (Syameroke)   2014-01-29 15:11:00
我的習慣是,先指定一個空list: df=list(NULL)接著 df[[i]]<-read.csv... 等喔喔,應該是df[[i]],不是df[i]。然後確認一下讀進來的不是matrix而是dataframe
作者: Wush978 (拒看低質媒體)   2014-01-29 15:56:00
你要做的事情沒問題,可行問題應該是difftime之後長度改變,造成不一致data.frame要求所有column長度一致
作者: ireullin (raison detre)   2014-01-29 18:07:00
可以了,是 [[i]]的問題,我沒注意到不好意思R版還真是溫暖的板阿,熱心的人很多...謝謝囉

Links booklink

Contact Us: admin [ a t ] ucptt.com