小编Zep*_*lee的帖子

根据组的第一行变换组中的每一行

例如,我有一个数据框:

df <- data.frame(grp = c(1,1,1,1,1,2,2,2,2,2),
                 idx = c(1,2,3,4,5,1,2,3,4,5),
                 val = c(4,6,1,7,2,8,5,3,9,1))
Run Code Online (Sandbox Code Playgroud)

我想将每行的val除以每组中第一行的val.我发现的唯一方法是引入一个新列:

 df %>% group_by(grp) %>%
        arrange(idx) %>%
        mutate(t = ifelse(row_number(idx) == 1, val, 0)) %>%
        mutate(val = val / sum(t))
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来做到这一点?

r dplyr

6
推荐指数
1
解决办法
1284
查看次数

为什么红宝石中的"eval"如此之慢?

在下面的红宝石代码中,'eval'比'def'慢10倍以上.

我理解'eval'需要解析字符串,但我想在这个例子中只需要完成一次.

require "benchmark"
GC.disable

eval "def run1; 10_000.times { #{"$a[5]\n" * 10_000} } end"
def run2
    10_000.times { "#{"$a[5]\n" * 10_000}" } 
end

$a = [1,2,3,4,5,6,7,8,9,10]

puts "run1:"
puts Benchmark.measure { run1 }

puts "run2:"
puts Benchmark.measure { run2 } 
Run Code Online (Sandbox Code Playgroud)

ruby

2
推荐指数
1
解决办法
537
查看次数

为什么clojure的地图println只能用于repl?

lein new app test-println用来创建一个clojure应用程序并启动repl lein repl,然后我输入(map println [1 2 3 4 5 6])并获得预期的结果: test-println.core=> (map println [1 2 3 4 5 6]) 1 2 3 4 5 6 (nil nil nil nil nil nil)

但是,如果我添加(map println [1 2 3 4 5 6])到结尾src/test_println/core.clj:

(ns test-println.core
  (:gen-class))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello, World!")
  (map println [1 2 3 4 5 6]))
Run Code Online (Sandbox Code Playgroud)

lean run仅打印 …

clojure

0
推荐指数
2
解决办法
237
查看次数

标签 统计

clojure ×1

dplyr ×1

r ×1

ruby ×1