Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于列的数据帧子集高效输出方法_R - Fatal编程技术网

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)
)