专家
我创建了一个统计,以满足一些条件的行数的函数。我做了这个功能,因为条件之一必须采取不同的标签,我有一个载体 - 我没有使用过滤器,因为我将不得不改变对过滤器的条件之一,一遍又一遍回到原始数据帧。我的功能:
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个输出当施加的功能。
我真的很感激您的意见和建议。
如果我理解正确的,这样的事情应该工作:
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)
请注意,在后者的代码的功能不返回任何东西。