有很多关于如何理解函数的教程,以及stackoverflow中的许多问题.然而,在阅读了The Little Schemer,几本书,教程,博客文章和stackoverflow主题之后,我仍然不知道这个简单问题的答案:"有什么关系?" 我明白如何理解一个功能,而不是"为什么?" 在它背后.
有人可以向我解释一下curried函数的实际用法(在每个函数只允许一个参数的语言之外,使用currying的必要性当然非常明显.)
编辑:考虑到TLS的一些例子,有什么好处
(define (action kind)
(lambda (a b)
(kind a b)))
Run Code Online (Sandbox Code Playgroud)
而不是
(define (action kind a b)
(kind a b))
Run Code Online (Sandbox Code Playgroud)
我只能看到更多的代码,没有更多的灵活性......
我有一个类似于这样的表:
| 0 | X |
| 1 | X |
| 2 | X |
| 3 | Y |
| 4 | Y |
| 5 | X |
| 6 | X |
| 7 | Y |
| 8 | Y |
| 9 | X |
Run Code Online (Sandbox Code Playgroud)
我想替换前两次出现的X
with X1
,然后再出现4次出现,X2
以便生成的表如下所示:
| 0 | X1 |
| 1 | X1 |
| 2 | X2 |
| 3 | Y |
| 4 …
Run Code Online (Sandbox Code Playgroud) 我有:
id choice
----------
1 "a,b,c"
2 "c"
3 "a,c"
4 "b,c"
Run Code Online (Sandbox Code Playgroud)
我需要
id a b c
---------
1 1 1 1
2 0 0 1
3 0 0 1
4 0 1 1
Run Code Online (Sandbox Code Playgroud)
(或等效的TRUE/FALSE值)
在R中有没有办法做到这一点?我已经调查过,strsplit
但似乎没有帮助.