我正在开发我的 R 包。我收到此错误:
\n\nNamespaces in Imports field not imported from:\n \xe2\x80\x98kableExtra\xe2\x80\x99 \xe2\x80\x98ranger\xe2\x80\x99\n All declared Imports should be used.\n
Run Code Online (Sandbox Code Playgroud)\n\n我在 Linux 和 Windows 平台上使用 ie 时遇到此错误devtools::check_rhub()
。当我在本地(mac os)检查我的包时, devtools::check()
所有检查都成功通过。
我更深入地研究了描述文件的导入,目前我正在做:
\n\nImports: \n ranger(>= 0.10.1),\n Metrics(>= 0.1.3),\n kableExtra(>= 0.9.0)\n
Run Code Online (Sandbox Code Playgroud)\n\n我正在使用来自ranger
和kableExtra
using ::
like 的函数ranger::function_name
,kableExtra::function_name
因为我只需要一两个函数。
我没有importFrom
在命名空间文件中执行操作。因为,正如我所说,我只需要借用 1 或 2 个函数。
为什么我会收到此错误?我缺少什么?
\n我正在使用pyspark。所以我有一个火花数据框,看起来像:
a | b | c
5 | 2 | 1
5 | 4 | 3
2 | 4 | 2
2 | 3 | 7
Run Code Online (Sandbox Code Playgroud)
需要输出:
a | b_list
5 | 2,1,4,3
2 | 4,2,3,7
Run Code Online (Sandbox Code Playgroud)
保持输出中给定的顺序很重要。
我正在学习使用 dplyr 并遇到了函数切片。我尝试使用或不使用显式 dplyr 来调用它。
它适用于显式调用,但在没有 dplyr 的情况下调用时会出错。有人可以指导我错误的根源是什么吗?
据我所知,切片函数是 dplyr 独有的,还是也属于其他某个包?
> library("tidyverse")
> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS 10.14.1
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats4 parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] faraway_1.0.7 pd.hg.u95av2_3.12.0 DBI_1.0.0 oligo_1.46.0 oligoClasses_1.44.0
[6] RSQLite_2.1.1 Biostrings_2.50.2 XVector_0.22.0 IRanges_2.16.0 S4Vectors_0.20.1
[11] ArrayExpress_1.42.0 Biobase_2.42.0 BiocGenerics_0.28.0 bindrcpp_0.2.2 forcats_0.3.0
[16] stringr_1.3.1 dplyr_0.7.8 purrr_0.2.5 tidyr_0.8.2 tibble_2.0.0
[21] ggplot2_3.1.0 tidyverse_1.2.1 readr_1.3.1 …
Run Code Online (Sandbox Code Playgroud) 我想知道如何在数据框中的特定列中映射值.
我有一个数据框,看起来像:
df = sc.parallelize([('india','japan'),('usa','uruguay')]).toDF(['col1','col2'])
+-----+-------+
| col1| col2|
+-----+-------+
|india| japan|
| usa|uruguay|
+-----+-------+
Run Code Online (Sandbox Code Playgroud)
我有一个字典,我想要映射值.
dicts = sc.parallelize([('india','ind'), ('usa','us'),('japan','jpn'),('uruguay','urg')])
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
+-----+-------+--------+--------+
| col1| col2|col1_map|col2_map|
+-----+-------+--------+--------+
|india| japan| ind| jpn|
| usa|uruguay| us| urg|
+-----+-------+--------+--------+
Run Code Online (Sandbox Code Playgroud)
我尝试过使用lookup function
它但不起作用.它抛出错误SPARK-5063.以下是我失败的方法:
def map_val(x):
return dicts.lookup(x)[0]
myfun = udf(lambda x: map_val(x), StringType())
df = df.withColumn('col1_map', myfun('col1')) # doesn't work
df = df.withColumn('col2_map', myfun('col2')) # doesn't work
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据框:
df = pd.DataFrame({'a1': [2,3,4,8,8], 'a2': [2,5,7,5,10], 'a3':[1,9,4,10,2]})
a1 a2 a3
0 2 2 1
1 3 5 9
2 4 7 4
3 8 5 10
4 8 10 2
Run Code Online (Sandbox Code Playgroud)
输出应该是:
0 2
1 3
2 4
3 8
4 8
Run Code Online (Sandbox Code Playgroud)
该怎么做:我想按行计算众数,如果众数不存在,我想要 a1 (第一列)中的值。
例如:在第二行中(3,5,9)
,模式不存在,因此我进入3
输出。
df.mode(axis=1)
,但这似乎会按行打乱值的序列,因此我并不总是获得输出中第一列的值。我是 redis 的新手,我希望我早点知道它。
我想在redis中存储这样的东西。它应该存储为哈希值。
{'fruits':['apple','mango','banana'],
'veggies':['spinach','onion','beans']}
Run Code Online (Sandbox Code Playgroud)
我尝试用redis-collection
python 包来做到这一点。我面临的问题是,保存.rdb
并再次重新加载后,我似乎无法访问密钥。
在文档中,它说我应该检索密钥及其哈希值。我认为必须有更好的方法。
请帮忙。
我正在寻找一种方法来链接 groupby 并应用,就像这样(参见下面的代码以获得具体示例):
df.groupby("a").apply(func_1).groupby("b").apply(func_2)
Run Code Online (Sandbox Code Playgroud)
我想它不起作用,因为 groupby 需要输入一个数据帧,这并不总是上面第二个 groupby 的情况(可以输入一个系列,参见示例)。一个解决方案可能是让第一个应用程序输出 func_1 的结果加上原始数据帧,但我还没有找到如何做到这一点。
我正在寻找一种通用的解决方法,而不仅仅是这个特定示例的解决方法。
示例:假设我想计算 b 中每个组的 a 路缘下面积,然后计算 c 中每个组的这些区域的总和。
df=pd.DataFrame({"a":np.arange(8),"b":np.repeat(np.arange(4),2),
"c":np.repeat(np.arange(2),4)})
df
a b c
0 0 0 0
1 1 0 0
2 2 1 0
3 3 1 0
4 4 2 1
5 5 2 1
6 6 3 1
7 7 3 1
df.groupby("b").apply(lambda x: trapz(x["a"])).groupby("c").apply(sum)
Traceback (most recent call last):
[...]
KeyError: 'c'
#Expected output
c
0 3.0
1 11.0
#I know that this code …
Run Code Online (Sandbox Code Playgroud) 我试图在R中转换一段python代码,但我不知道如何实现它.
在python中我们可以做到:
## dictionary
a_list = {'red':23, 'black':12,'white':4,'orange':79}
## sort by key
dict(sorted(a_list.items()))
{'black': 12, 'orange': 79, 'red': 23, 'white': 4}
## sort by values
sorted(a_list.items(), key=lambda x: x[1])
[('white', 4), ('black', 12), ('red', 23), ('orange', 79)]
Run Code Online (Sandbox Code Playgroud)
对于这个问题,我有一个:
a_list <- list(red=23, black=12, white = 4, orange=79)
Run Code Online (Sandbox Code Playgroud)
我想以两种方式对此列表进行排序,例如输出为:
输出1(按键排序): list(black=12, orange=79, red=23, white = 4)
输出2(按值排序): list(white = 4,black=12, red=23,orange=79)
我怎样才能做到这一点 ?
我无法找到这个简单问题的解决方案.我有一个这样的数据框:
df = data.table(X1 = 1:12, X2 = LETTERS[1:12])
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为的新变量group
,我希望将连续行分组为3.例如:行1-3,将是group0,行4-6将是group2,依此类推.
结果预期:
X1 X2 group
1: 1 A 0
2: 2 B 0
3: 3 C 0
4: 4 D 1
5: 5 E 1
6: 6 F 1
7: 7 G 2
8: 8 H 2
9: 9 I 2
10: 10 J 3
11: 11 K 3
12: 12 L 3
Run Code Online (Sandbox Code Playgroud) 我有一个包含数字和名字的清单.
lst = ['new car', '232', 'famous bike','232', 'new car', '232plane', 'new car', 'plane232']
Run Code Online (Sandbox Code Playgroud)
我只想new car, famous bike
数字而不是数字或字母数字.
输出将是2,因为有两个独特的单词:汽车,自行车.
我知道有一个简单的答案,但我无法理解它.
谢谢.
python ×5
r ×4
pandas ×3
dataframe ×2
pyspark ×2
apache-spark ×1
data.table ×1
dplyr ×1
mode ×1
pandas-apply ×1
python-3.x ×1
r-package ×1
redis ×1
slice ×1