我有一个数据帧,
d<-data.frame(name=c("brown cat", "blue cat", "big lion", "tall tiger",
"black panther", "short cat", "red bird",
"short bird stuffed", "big eagle", "bad sparrow",
"dog fish", "head dog", "brown yorkie",
"lab short bulldog"), label=1:14)
Run Code Online (Sandbox Code Playgroud)
我想搜索name
专栏,如果出现"cat","lion","tiger"和"panther"这两个字,我想将字符串分配给feline
新列和相应的行species
.
如果"bird", "eagle", and "sparrow"
出现单词,我想将字符串分配给avian
新列和相应的行species
.
如果出现"dog","yorkie"和"bulldog"字样,我想将字符串分配给canine
新列和相应的行species
.
理想情况下,我将它存储在一个列表或类似的东西中,我可以保留在脚本的开头,因为当物种的新变种出现在名称类别中时,可以轻松访问更新符合条件的内容为feline
,avian
和canine
.
这里几乎已经回答了这个问题(如何根据R中其他列的部分字符串匹配在数据框中创建新列),但它没有解决此问题中存在的多个名称扭曲.
编辑:%.%运算符现已弃用.使用magrittr中的%>%.
原始问题这个%.%
操作员做什么?我已经看到它在dplyr包中使用了很多,但似乎找不到任何有关它是什么或如何工作的支持文档.
它似乎将命令链接在一起,但据我所知......当我在它时,任何人都可以解释那些挂在%
标志上的特殊操作员的开局是什么以及何时在技术上是时候到了用它们代码更好?
假设我有两个 STM32,并且我在这里使用这个编程器。
我想连接到它们两个并独立调试/刷新/迭代。
所以,我的设置如下:
PC |-> USB1 -> ST-LINK-Programmer1 -> STM32_Board1
|-> USB2 -> ST-LINK-Programmer2 -> STM32_Board2
我通常用一块板来做这件事的方法非常简单。
openocd -f config.cfg
这是我调用的配置文件:
source [find interface/stlink-v2.cfg]
transport select hla_swd
source [find target/stm32f4x.cfg]
reset_config none
然后,在另一个终端中,我像这样调用arm-gdb:
arm-none-eabi-gdb build/FW.elf
在 ~/.gdbinit 中,我有这一行:
target remote localhost:3333
这是非常明显的...我为第一个 OpenOCD 使用端口 3333,但第二个实例尝试使用相同的端口并失败
Error: couldn't bind tcl to socket: Address already in use
我已经查看了此处的文档,但我无法了解如何在我的config.cfg
文件中调用这些选项。
我还尝试将有关 tcl_port 和 gdb_port 的这些命令添加到实际的命令行参数中,例如
openocd -f config.cfg -c tcl_port 4444
,但这也不起作用......套接字仍在使用中。
这样做的正确方法是什么?配置 …
我在 python 中有一个列表,我想从中获取一组索引并将其保存为原始列表的子集:
templist = [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]]
Run Code Online (Sandbox Code Playgroud)
我想要这个:
sublist=[[1, 4, 7, 16, 19,20]]
Run Code Online (Sandbox Code Playgroud)
举个例子。
我无法提前知道列表元素的内容是什么。我所拥有的只是始终相同的索引。
有没有单行方式来做到这一点?
总的来说,我对 MCU 的 ST 系列的语言/行话/术语有点困惑,我认为这阻碍了我的进步。
一点背景:我是一名 EE,通过使用 AVR 平台的大学必修课程了解了我对 FW 的所有了解。喜欢它,非常简单且易于使用。快速浏览一下,通过独一无二的数据表,并一鼓作气你抽象掉!宏的、磅定义等...就是这么简单!你编写一个main.c
和一个 Makefile,编译并用 avr-dude 启动......生活是美好的。
然后,我走进了STM32 ARM内核的脱粒机,天啊……STDPerifieral Libraries、HAL层、CubeMX、程序集启动文件、CMSIS、IDE特定项目文件,还有十几种不同类型的只是STM32F4.. .我已经快不知所措了!
我真正的问题是我有这个 STM32F411 探索板,我需要运行一个 20x4 字符 LCD。我在 github 等上找到了几个看起来不错的项目:
https://stm32f4-discovery.net/2014/06/library-16-interface-hd44780-lcd-controller-with-stm32f4/
https://github.com/EarToEarOak/STM32F4-HD44780
https://github.com/6thimage/hd44780
https://github.com/mirkoggl/STM32F4_LiquidCrystal
但是,我无法弄清楚如何正确编译其中的任何一个。我一直在使用 CubeMx 来生成 Makefile 作为起点,主要是因为它制作了一个链接器脚本和我显然需要的 .s 文件,但我完全没有经验或想法如何自己做到这一点。这就是我对 CubeMX 的依赖。
我认为我的大部分问题是,通过尝试将 CubeMX 生成的 MCU 特定代码和各种在线项目代码粘合在一起,我遇到了很多冲突......在线项目正在调用一些 .h 文件或引用某些东西Makefile 找不到,这就是事情出轨的地方......例如,其中一些项目正在调用该stm32f4xx.h
文件,但 CubeMX 并未将其包含在其生成的代码中。
我不得不去系统中的其他地方并将该文件复制到文件./Inc
夹中,但这似乎真的倒退了......而且,它仍然没有构建。
如果我要在这里保持头脑清醒,我需要一个 AVR 到 STM32 12 步康复程序或其他东西......
所以,最大的问题是:
你们如何从第一个项目开始git clone xxxx
并构建它以在 STM32F411 探索板上运行,arm-none-eabi
并且仅使用Makefiles...不允许 IDE。
并且,开发 8 位 AVR 和 …
我有一个 STM32F4,我想对一个已与掩码进行“或”运算的 GPIO 端口进行 PWM 处理。
因此,也许我们想要以0b00100010
200khz 进行一段时间的 PWM,但是,10khz 后,我们现在想要进行 PWM 0b00010001
...然后,10kHz 后,我们想要在同一 GPIO 上对其他一些掩码进行 PWM。
我的问题是,如何使用 DMA 做到这一点?我正在尝试触发一个 DMA 传输,该传输将在上升沿设置所有位,然后触发另一个 DMA 传输,该传输将在下降沿清除所有位。
我还没有找到一个好的方法来做到这一点(至少使用 CubeMX 以及我对 C 和 STM32 的有限经验),因为看起来我只有机会在上升沿做一些事情。
我主要关心的问题之一是 CPU 时间,因为尽管我在上面的示例中提到了数百千赫兹,但我想让这个框架非常强大,因为它不会浪费 CPU 资源。这就是为什么我喜欢 DMA 的想法,因为它是专用硬件,可以无意识地将这里的一个单词提升到那里的一个单词之类的东西,而 CPU 可以做其他事情,比如处理 PID 的数字或其他东西。
编辑 为了清楚起见:我有一组 6 个值,可以写入 GPIO。它们存储在一个数组中。我想要做的是设置一个 PWM 定时器来在 PWM 的正宽度期间设置 GPIO,然后我希望在低周期宽度期间将 GPIO 设置为 0b00000000(如果 pwm. 因此,我需要查看上升沿何时,快速写入GPIO,然后查看下降沿何时,并向GPIO写入0。
我正在查看其他人的代码库,我看到了这个函数原型:
void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr );
Run Code Online (Sandbox Code Playgroud)
它的定义如下:
void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
{
Radio.Sleep( );
BufferSize = size;
memcpy( Buffer, payload, BufferSize );
RssiValue = rssi;
SnrValue = snr;
State = RX;
}
Run Code Online (Sandbox Code Playgroud)
但是,稍后在超循环中调用它,main
如下所示:
RadioEvents.RxDone = OnRxDone;
这究竟是怎么合法的?该函数期待一个字符指针和三个整数,但它没有任何东西,这很好.这里发生了什么?
我有一个字典,看起来像这样:
x={'a':"a",'b':"b"}
Run Code Online (Sandbox Code Playgroud)
和
y={'a':"c",'b':"d"}
Run Code Online (Sandbox Code Playgroud)
我要这个:
z={'a':"ac",'b':"bd"}
Run Code Online (Sandbox Code Playgroud)
我如何用Python做到这一点?