从包含一个for循环函数将结果保存

问题描述 投票:0回答:1

专家

我创建了一个统计,以满足一些条件的行数的函数。我做了这个功能,因为条件之一必须采取不同的标签,我有一个载体 - 我没有使用过滤器,因为我将不得不改变对过滤器的条件之一,一遍又一遍回到原始数据帧。我的功能:

counting <- function(df, na.rm = TRUE, ...) {

    for (i in seq_along(counties)) {   
      observations<-
      nrow(subset(financial_environment, 
financial_environment$county==counties[i]
                  & population> 500000))
      print(observations) }
}
counting(financial_environment)

问题是如何可以保存控制台的输出在一个载体(其具有用于循环内)。我想有这样的载体来创建在我的代码先前向量的数据帧。

我读了其他计算器问题,但与我做了一个比较的功能显得有点基础。这些答案提出以下建议:

创造一个结果将保存在一个载体。 results <- vector("numeric", 650L)

然后,只需改变一个线的功能:

counting <- function(df, na.rm = TRUE, ...) {

    for (i in seq_along(counties)) {   
      observations<- 
      nrow(subset(financial_environment, 
financial_environment$county==counties[i]
                  & population> 500000))
      print(observations)}

接下来,我只想应用功能的数据帧,并查看“结果”矢量 counting(financial_environment) results 通过这样做,“结果”向量只有零的内线。

我也试图与sapply,但控制台显示1000个obsevartions。我注意到,结果被重复,即最后的450个outpts是第450个输出当施加的功能。

我真的很感激您的意见和建议。

r function for-loop data-science policy
1个回答
0
投票

如果我理解正确的,这样的事情应该工作:

results <- vector("numeric", 650L)

counting <- function(someOption) {
  for (i in seq_along(someOption)) {   
    observation <- insertHereYourCodeForObservation
    results[i] <- observation
  }
  results
}

results <- counting(someOption = someData)

在这种情况下,函数返回,然后明确地分配给所述results阵列results

可替代地,results的值可以直接从使用<<-这样的(如由Ben373指出的,这已被弃用)在函数内部改变:

results <- vector("numeric", 650L)

counting <- function(someOption) {
  for (i in seq_along(someOption)) {   
    observation <- insertHereYourCodeForObservation
    results[i] <<- observation
  }
}

counting(someOption = someData)

请注意,在后者的代码的功能不返回任何东西。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.