[问题] 将多个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