【发布时间】:2020-06-10 09:56:39
【问题描述】:
我之前使用 $
my_data$component <- as.factor(c((rep("Con",1)),(rep("Neu",1)),(rep("Inc",1))))
自从我回到我的脚本进行更改(几个月后)因为我在分析中发现一个错误,这段代码 sn-p 不再有效,我得到了以下错误的回报:
Supplied 3 items to be assigned to 216 items of column 'c'. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code.
我知道解决方案可能围绕 data.table 中的 := 函数展开,但我不是 R 向导(这些脚本是作为第一次涉足 R 编写的,试图放弃 SPSS 和 Excel 作为心理学家) .我不明白如何在 RHS 上使用 rep() 来实现相同的结果。
我想要的只是“con”、“neu”和“inc”在新列中定期复制我的 data.table 的长度。我在 data.table 包 pdf 中读到 RHS 是“替换值列表。它以通常的方式回收以填充满足 i 的行数,如果有的话。”。
我知道以通常的方式回收意味着回收一直持续到矩阵结束。
这是我尝试过的方法,它也给出了同样的错误。
dt <- data.table(A=(1:9))
dt
A
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
dt[ , 'c' := .("con","neu","inc")]
我会很感激任何帮助,因为我在试图解决这个看似简单的问题上花费的时间越长,以前在 data.table 所谓的功能下使用不太理想的代码工作,我就越觉得愚蠢。
【问题讨论】:
-
也许:
dt[ , c := rep(c("con","neu","inc"), 3)]?
标签: r data.table