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
R 如何将变量传递到split()?_R_Split - Fatal编程技术网

R 如何将变量传递到split()?

R 如何将变量传递到split()?,r,split,R,Split,我想在for循环中运行split()。这里的想法是基于CMPD\u-dfu-1[5],CMPD\u-dfu-1[5],CMPD\u-dfu-2[5]等,拆分CMPD\u-dfu-1,CMPD\u-dfu-2等。如何传入data.frame而不是字符串 for (i in 1:10) { split(paste("CMPD_DF", i, sep = "_"), paste(paste("CMPD_DF", i, sep = "_"), "[5]", sep="")) }

我想在for循环中运行
split()。这里的想法是基于
CMPD\u-dfu-1[5]
CMPD\u-dfu-1[5]
CMPD\u-dfu-2[5]
等,拆分
CMPD\u-dfu-1
CMPD\u-dfu-2等。如何传入data.frame而不是字符串

for (i in 1:10) {
  split(paste("CMPD_DF", i, sep = "_"), 
        paste(paste("CMPD_DF", i, sep = "_"), "[5]", sep=""))
}

很抱歉最初的混乱。您可以将数据帧放入列表中,然后使用
lappy
。这假定要拆分的列在每个数据帧中都是相同的。我将更新一个更通用的解决方案

d1 <- data.frame(x =1:10, y = rep(letters[1:2], each = 5))
d2  <-  d1

l <- list(d1,d2)
myFun <- function(x){
  return(split(x,x[,2]))
}
lapply(l,myFun)

您的代码无法工作,因为您没有将data.frame传递给
split
。您正在传递一个字符向量,其中包含一个名为data.frame的字符串。像这样的东西应该有用,但不是很像R@乔兰的答案更可取

for (i in 1:10) {
  dfname <- paste("CMPD_DF", i, sep = "_")
  split(get(dfname), get(dfname)[5])
}
for(1:10中的i){

dfname我不完全理解你想做什么。你确定你没有将
split
strsplit
混淆吗?split()将根据一列的内容将data.frame分解为更小的数据帧。我试图一次传递一个数据帧,将其“拆分”为更小的部分。
split(d.f,d.f[5] )
将生成与d.f[5]中存在唯一值一样多的数据帧,每个数据帧包含与[5]中该值关联的行。抱歉,我解释起来有点困难。对于最初的混乱,我很抱歉,我想我下面有一些可以为您解决的问题。Joran的回答很好,但我仍然有在for循环中创建列表的问题。每次数据帧的数量都会不同,因此我需要循环。我无法硬编码列表
l@James-从不fe接受你认为最有用的答案很糟糕。不过,我要指出的是,如果你在硬编码数据帧,并且在不同的情况下有不同数量的数据帧,你怎么知道在每种情况下用硬编码来实现for循环需要多长时间呢?这几乎总是更好的做法(而且更容易)将相关结构保存在单个对象中,如列表。我在内部使用命名约定,以便对它们进行计数。
for(I in 1:length(grep(“CMPD_DF_”),ls(),fixed=TRUE))
我是一名R noob,因此我可能仍在考虑更多的程序性问题。我希望将这些小组全部放在一个d.f中,并在那里进行工作。我还有更多的阅读。谢谢您的帮助。
for (i in 1:10) {
  dfname <- paste("CMPD_DF", i, sep = "_")
  split(get(dfname), get(dfname)[5])
}