所以我试图将一个数据帧拆分成多个。我目前有:
y <- data.frame(day=c('1','1','2','2'),amount=c(1,2,3,4))
for(i in 1:2){
i <- as.character(i)
for(j in 1:4){
if (grep(i, y$day, value = TRUE) > 0){
assign(paste0('df', i)) <- rbind(assign(paste0('df', i)),y[j])
}
}
}
然后它给我一个错误和警告说:
assign(paste0("df", i)) :
缺少参数“value”,没有默认值
另外:
警告讯息:
在if(grep(i,y $ day,value = TRUE)&gt; 0){:条件有长度&gt; 1,只使用第一个元素
我似乎无法找到应该是什么价值或放在哪里。
答案 0 :(得分:3)
除非你正在建立一个新的环境,否则我会避开assign
。如果您尝试按天拆分,则可以使用split
y <- data.frame(day=c('1','1','2','2'),amount=c(1,2,3,4))
split(y, y$day)
# $`1`
# day amount
# 1 1 1
# 2 1 2
#
# $`2`
# day amount
# 3 2 3
# 4 2 4
如果您希望在全球环境中将它们分配到自己的数据框(不推荐),则可以使用list2env
s <- setNames(split(y, y$day), paste0("df", unique(y$day)))
list2env(s, globalenv())
现在,您在全球环境中拥有数据框df1
和df2
df1
# day amount
# 1 1 1
# 2 1 2
df2
# day amount
# 3 2 3
# 4 2 4