对于循环输出错误答案

时间:2016-09-15 14:40:25

标签: r function loops

以下代码就是一个例子。我的函数testf在单独调用NAMESRC时工作正常但如果我尝试通过向量执行此操作则无法正常工作 - 我认为这是有道理的。所以我冒昧地把它变成一个循环和权利(从我所理解的)这应该有效,但它没有。它产生一个输出,但它显然是错误的,我不知道它为什么这样做。我错误地应用了这个吗?感谢

NAME <- c("SYNOP", "SYNOP", "METAR", "METAR", "SYNOP", "METAR")
AIR <-  c(6.7, 8.3, 9.2, 8.9, 9.1, 8.7)
SRC <- c("WMO", "WMO", "WMO", "ID_3", "ID_3", "WMO")
Example <- data.frame(NAME, AIR, SRC)

require(dplyr)
testf <- function(j) {
Example %>% group_by((j)) %>% summarize(Count=n())
}

testf(NAME)
testf(SRC)

vector <- c("NAME", "SRC")

testf(vector)

for (v in vector) {
testg <- testf(v)
print(testg)
  }

2 个答案:

答案 0 :(得分:2)

为了能够将字符串传递给testf并将其传递给group_by,您必须使用group_by_testf <- function(j) { Example %>% group_by_(.dots = j) %>% summarize(Count=n()) } # examples: testf("NAME") testf(c("NAME", "AIR")) for (v in c("NAME", "SRC")) { print(testf(v)) } :< / p>

function replace_text_wps($text){

$dir = plugin_dir_path( __FILE__ );
   $file= $dir."bad2.list";

$badlist = file($file, FILE_IGNORE_NEW_LINES);

$replacement = "[CENSORED]";
$badlist = array_map(function($v) { return "\b". $v ."\b"; }, $badlist);
foreach($badlist as $f) {
    $text = preg_replace("/".$f."/u", $replacement, $text);


    return $text;
}

请参阅此处,了解dplyr包中使用的非标准评估的解释:standard evaluation version

答案 1 :(得分:0)

尝试使用:

testf <- function(j) {
    Example %>% group_by((deparse(j))) %>% summarize(Count=n())
}