我有一个火花数据框df.有没有办法使用这些列的列表选择几列?
scala> df.columns
res0: Array[String] = Array("a", "b", "c", "d")
Run Code Online (Sandbox Code Playgroud)
我知道我可以做点什么df.select("b", "c").但是假设我有一个包含几个列名的列表val cols = List("b", "c"),有没有办法将它传递给df.select?df.select(cols)抛出错误.像df.select(*cols)python中的东西
假设我有一个字符串
s = "PleaseAddSpacesBetweenTheseWords"
Run Code Online (Sandbox Code Playgroud)
我如何在R中使用gsub在单词之间添加一个空格以便我得到
"Please Add Spaces Between These Words"
Run Code Online (Sandbox Code Playgroud)
我应该做点什么
gsub("[a-z][A-Z]", ???, s)
Run Code Online (Sandbox Code Playgroud)
我该怎么办?另外,我发现R的正则表达式文档令人困惑,因此对R中的正则表达式的引用或写法将非常感激.
是否可以使用已实例化的超类在Python中进行子类化?
我不完全知道如何提出问题,所以让我举个例子。假设我有一个Rectangle类,并且我想构建另一个类ColoredRectangle。但我不希望每个ColoredRectangle相同的维度成为自己的新维度Rectangle。因此,当我启动时,ColoredRectangle我将其传递给已实例化的对象Rectangle。
即,我想要
r = Rectangle([1,2])
r_red = ColoredRectangle(r, "red")
r_blue = ColoredRectangle(r, "blue")
Run Code Online (Sandbox Code Playgroud)
但是现在r_red,r_blue应该能够获取所有矩形方法和属性。例如,假设Rectangle有一个area()属性。
r.area
2
r_red.area
2
Run Code Online (Sandbox Code Playgroud)
r_red并r_blue应“指向”相同Rectangle。我知道我可以这样写:
class ColoredRectangle(Rectangle):
def __init__(self, rectangle, color):
self.color = color
self.rectangle = rectangle
Run Code Online (Sandbox Code Playgroud)
但是那我得写
r_red.rectangle.area
Run Code Online (Sandbox Code Playgroud)
这很丑。
我真的很喜欢 namedtuple 集合的功能。具体来说,我喜欢它对二维空间中的点有多大用处。
In : from collections import namedtuple
In : Point = namedtuple('Point', ['x', 'y'])
In : p = Point(1,2)
In : p.x
Out: 1
In : p.y
Out: 2
Run Code Online (Sandbox Code Playgroud)
我认为这比引用列表的第一个和第二个条目要清楚得多。我想知道是否有办法使 Point 也是一个 numpy 数组。例如
In: p1 = Point(1,2)
In: p2 = Point(3,4)
In: (p1+p2).x
Out: 4
Run Code Online (Sandbox Code Playgroud)
以及来自 numpy 的类似功能。换句话说,我想我希望 Point 成为 numpy 的子类?我可以这样做吗?如何?
假设我在R中有两个数字函数,例如,cos和exp.有一个新的函数对象f(x)= cos(x)*exp(x)的最快方法是什么?我可以将其定义为
f <- function(x) {cos(x)*exp(x) }
Run Code Online (Sandbox Code Playgroud)
但有没有这样做的简写方法(例如f = cos*exp)
我是一个Haskell新手试图了解如何使用Data.Map结构,懒惰的评估和Maybe类型.
在Python中,我可以定义一个字典结构,其值是函数.给定一个键我就可以使用相应的函数:
d = {"+": lambda x,y: x+y}
def f(key, v1, v2):
if key in d:
return d[key](v1, v2)
else:
return 0
Run Code Online (Sandbox Code Playgroud)
我试图在Haskell中做类似的事情,但它不编译.
d = Map.fromList [('+', (+))]
f :: Char -> Integer -> Integer -> Integer
f key v1 v2 =
if k == Nothing
then 0
else f v1 v2
where
k = Map.lookup key d
(Just f) = k
Run Code Online (Sandbox Code Playgroud)
这不会编译并返回错误之类的
No instance for (Eq (Integer -> Integer -> Integer))
Run Code Online (Sandbox Code Playgroud)
我相信这是因为Map.lookup '+' d …
python ×2
r ×2
apache-spark ×1
dictionary ×1
function ×1
gsub ×1
haskell ×1
inheritance ×1
maybe ×1
namedtuple ×1
numpy ×1
oop ×1
regex ×1
subclass ×1