R 基于列的数据帧子集高效输出方法
与 我想到了这个:R 基于列的数据帧子集高效输出方法,r,R,与 我想到了这个: 1.tsv 1 0.49 1 1.04 2.tsv 2 0.40 2 0.97 ... 7.tsv 7 -0.03 7 0.52 但是我很好奇是否有更好的方法来完成这项工作而不使用for循环 谢谢 您通常可以使用在for-loop-in函数中使用的相同构造,并与apply系列中的一个组合使用: 然而,为了清楚起见,我认为for循环选项更好。而且,对于这样的操作,这两种方法的速度非常相似。apply系列的真正优势在于,当您需要扩展一个数据结构时,
1.tsv
1 0.49
1 1.04
2.tsv
2 0.40
2 0.97
...
7.tsv
7 -0.03
7 0.52
但是我很好奇是否有更好的方法来完成这项工作而不使用for循环
谢谢 您通常可以使用在for-loop-in函数中使用的相同构造,并与apply系列中的一个组合使用:
然而,为了清楚起见,我认为for循环选项更好。而且,对于这样的操作,这两种方法的速度非常相似。apply系列的真正优势在于,当您需要扩展一个数据结构时,其大小是您事先无法知道的。您通常可以使用在for-loop-in函数中使用的相同构造,并与apply系列中的一个组合使用: 然而,为了清楚起见,我认为for循环选项更好。而且,对于这样的操作,这两种方法的速度非常相似。apply系列的真正优势在于,当您需要扩展一个数据结构时,其大小是您事先无法知道的。使用拆分和映射是一种选择
myfun <- function(wk) {
write.table(df[df$week == wk, ]
, file = paste(wk, ".tsv", sep = "")
, sep = "\t", row.names = F, col.names = F, quote = F)
}
lapply(unique(df$week), myfun)
使用拆分和映射是一种选择
myfun <- function(wk) {
write.table(df[df$week == wk, ]
, file = paste(wk, ".tsv", sep = "")
, sep = "\t", row.names = F, col.names = F, quote = F)
}
lapply(unique(df$week), myfun)
谢谢你的澄清,贾斯汀。我想这正是我想要的。我总是对apply家族感到困惑,想不出一个好的方法来使用它们。谢谢你的澄清,Justin。我想这正是我想要的。我总是对apply家族感到困惑,想不出一个好的方法来使用它们。很酷。谢谢我喜欢它,只是它需要创建额外的对象。非常酷。谢谢我喜欢它,只是它需要创建额外的对象。
myfun <- function(wk) {
write.table(df[df$week == wk, ]
, file = paste(wk, ".tsv", sep = "")
, sep = "\t", row.names = F, col.names = F, quote = F)
}
lapply(unique(df$week), myfun)
df.split <- split(df, df$week)
invisible( # hide Map return value, just a list of NULLs.
Map(write.table, x=df.split, file=paste(names(df.split), "tsv", sep="."),
row.names=F, col.names=F, quote=F)
)