当前位置: 首页 > 知识库问答 >
问题:

使用lApplication将函数应用于数据帧列表,并将输出保存到具有不同名称的文件

沈飞舟
2023-03-14

我有一个数据帧列表,并为列表中的每个元素(例如每个数据帧)指定了一个名称:

例如。

df1 <- data.frame(x = c(1:5), y = c(11:15))  
df2 <- data.frame(x = c(1:5), y = c(11:15))  
mylist <- list(A = df1, B = df2)  

我有一个函数,我想应用到每个数据帧;在这个函数中,我想包括一行写入结果到文件(最终我想做更复杂的事情,如保存每个数据帧的两个变量之间的相关性图但我想我应该从简单开始)

例如。

NewVar <- function(mydata, whichVar, i) {  
mydata$newVar <- mydata[, whichVar] + 1  
write.csv(mydata, file = i)  
}

我想使用lApplication()将此函数应用于列表中的每个数据帧

类似的东西:

hh<-lapply(mylist, NewVar, whichVar = "y")

我不知道如何在lappy的上下文中分配“I”,以便I迭代数据帧列表中的名称,保存与修改的数据帧相对应的多个具有不同名称的文件(在本例中,两个名为AB)。

共有2个答案

龙博
2023-03-14

有很多选择。例如:

  lapply(names(mylist),
         function(x)write.csv(mylist[x],
                              file =paste0(x,'.csv')))

或者使用索引

 lapply(seq_along(mylist),
     function(i)write.csv(mylist[i],
                          file =paste0(names(mylist)[i],'.csv')))
邴俊达
2023-03-14

它将用于以下lappy调用:

lapply(names(mylist), function(x) NewVar(mylist[[x]], "y", x))
 类似资料:
  • 我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误:

  • 并将其应用于数据表的一列--这是我希望这样做的: 我还没有找到任何简单的方法,正在努力找出如何做到这一点。一定有一个更简单的方法,比将数据rame转换为和RDD,然后从RDD中选择行来获得正确的字段,并将函数映射到所有的值,是吗?创建一个SQL表,然后用一个sparkSQL UDF来完成这个任务,这更简洁吗?

  • 我是熊猫的新手。想知道如何将函数应用到数据框中的两列,并将函数的输出映射到数据框中的新列。这在熊猫语法中是可能的,还是我应该求助于本地Python来迭代数据框列中的行来生成新列? 问题是如何得到,例如,在一个新的列c中两个数字的乘法

  • 我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。 然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“col_1”和“col_2”中给出。 最后一个命令以错误结束: 谢谢你的

  • 怎么办? **添加详细示例如下***

  • 我正在尝试为封装在父元素中但具有不同元素名称的元素使用应用模板。在我的示例中,我想将其应用于元素,并选择其中任何一个具有值。此任务是我问的另一个问题的延续。我使用以下XML 我正在使用java应用以下XSLT 1.0。在上面的示例中,我希望模板应用于firstName和lastName,但在firstName中显示值,因为它是第一个有值的。 Java代码是Oracle tuorial页面示例中的S