作者ireullin (raison detre)
看板R_Language
标题[问题] 将多个data frame放入list进行操作
时间Wed Jan 29 14:25:27 2014
很抱歉又来问一些可能是很基础的问题
我有五张相同格式的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
1F:→ ching0629:我的习惯是,先指定一个空list: df=list(NULL) 01/29 15:11
2F:→ ching0629:接着 df[[i]]<-read.csv... 等 01/29 15:12
3F:→ ching0629:喔喔,应该是df[[i]],不是df[i]。 01/29 15:14
4F:→ ching0629:然後确认一下读进来的不是matrix而是dataframe 01/29 15:14
5F:推 Wush978:你要做的事情没问题,可行 01/29 15:56
6F:推 Wush978:问题应该是difftime之後长度改变,造成不一致 01/29 15:57
7F:推 Wush978:data.frame要求所有column长度一致 01/29 16:11
8F:→ ireullin:可以了,是 [[i]]的问题,我没注意到不好意思 01/29 18:07
9F:→ ireullin:R版还真是温暖的板阿,热心的人很多...谢谢罗 01/29 18:08