如何在R中的循环内创建循环
我是R的新手,在关系循环方面需要一些帮助。我需要从一个数据集中生成大量的表,我认为循环中的循环可以解决这个问题,但是我在获得正确的结果时遇到了问题 假设我有以下数据集:如何在R中的循环内创建循环,r,loops,nested-loops,R,Loops,Nested Loops,我是R的新手,在关系循环方面需要一些帮助。我需要从一个数据集中生成大量的表,我认为循环中的循环可以解决这个问题,但是我在获得正确的结果时遇到了问题 假设我有以下数据集: var1 <- c("A","A","A","A","B","B","B","B") var2 <- c(1,2,1,2,1,2,1,2) df <- data.frame(var1,var2) var1扩展@Gregor的评论和这里的问题 , 您可以使用Map()和split()函数将新创建的数据帧输出到单
var1 <- c("A","A","A","A","B","B","B","B")
var2 <- c(1,2,1,2,1,2,1,2)
df <- data.frame(var1,var2)
var1扩展@Gregor的评论和这里的问题
,
您可以使用Map()
和split()
函数将新创建的数据帧输出到单个csv文件:
代码:
它会将csv写入您当前的工作目录,名称为“table_A_1.csv”,等等,基于var1
和var2
的值,我们可以基于两列将数据框拆分为多个数据框,并将它们存储在列表中
df_list <- split(df, f = list(df$var1, df$var2))
df_list
# $A.1
# var1 var2
# 1 A 1
# 3 A 1
#
# $B.1
# var1 var2
# 5 B 1
# 7 B 1
#
# $A.2
# var1 var2
# 2 A 2
# 4 A 2
#
# $B.2
# var1 var2
# 6 B 2
# 8 B 2
其中df_list[[x]]
是基于名称访问单个数据帧的方法paste0(x,“.csv”)
用于构建文件目录。您正在寻找xtabs(~var1+var2,data=df)
?循环是一种不好的方法-看起来您想要split(df,f=paste(df$var1,df$var2,sep=“)
。我需要创建几个数据帧以导出到csv。var1和var2各一个。谢谢Gregor和jogo!谢谢安德鲁·海恩斯!我已经使用了这个解决方案。为布鲁诺干杯,如果它解决了你的问题,请接受它作为答案,这样其他人就可以看到这个问题有答案了!:)@布鲁诺瓜里塔我很高兴它能帮上忙。如果可能的话,接受我的答案或安德鲁·海恩斯的答案取决于你认为哪一个对你最有帮助或有用。它会让其他人知道这个问题有解决办法。
s=split(df, f = paste(df$var1, df$var2, sep = "_"))
Map(write.csv,s, paste0("table_",names(s),".csv"),row.names=F)
df_list <- split(df, f = list(df$var1, df$var2))
df_list
# $A.1
# var1 var2
# 1 A 1
# 3 A 1
#
# $B.1
# var1 var2
# 5 B 1
# 7 B 1
#
# $A.2
# var1 var2
# 2 A 2
# 4 A 2
#
# $B.2
# var1 var2
# 6 B 2
# 8 B 2
lapply(names(df_list), function(x) write.csv(df_list[[x]], paste0(x, ".csv"), row.names = FALSE))