r - 如何基于另一列创建具有重复值的新列?
问题描述
这是我目前拥有的。我有一个名为“test1M”的列,其值为 0 或 1。如果值为 1,我想将“test1Mxx”列中的下 20 个值设置为值 1。
如果我运行这段代码,我会收到一个错误(if (data$test1M[x] == 1) { 中的错误:参数的长度为零)。
我有什么更好的方法来做到这一点?代码非常重复,所以我想尽可能减少它。如果有办法将其转换为更可取的函数,那么我可以更改值的数量(例如,可能是以下 25 个值或 40 个值等)
for(x in data$test1){
if(data$test1[x]==1){
data$test2[x+1]=1
data$test2[x+2]=1
data$test2[x+3]=1
data$test2[x+4]=1
data$test2[x+5]=1
data$test2[x+6]=1
data$test2[x+7]=1
data$test2[x+8]=1
data$test2[x+9]=1
data$test2[x+10]=1
data$test2[x+11]=1
data$test2[x+12]=1
data$test2[x+13]=1
data$test2[x+14]=1
data$test2[x+15]=1
data$test2[x+16]=1
data$test2[x+17]=1
data$test2[x+18]=1
data$test2[x+19]=1
data$test2[x+20]=1}
}
解决方案
您的循环不起作用,因为x
它是 的值data$test1
,而不是它的索引。你需要类似的东西:
data$test2 <- data$test1
for (x in seq_along(data$test1))
if (data$test1[x] == 1) data$test2[x + 1:20] <- 1
推荐阅读
- python - gtk+ vlc,MediaPlayerEndReached 事件不播放下一个视频
- ruamel.yaml - 如何使用 ruamel.yaml 将字典与基于 defaultdict 的字典打印为 yaml 文件?
- html - 表中两列之间的空间?
- c# - 如何使用 C# 为 Reading API 在 .Net Web 应用程序中读取 epub 文件?
- keycloak - 从 MDB 调用 EJB 的权限问题
- identityserver3 - IdentityServer3 idsrv.partial cookie 变得太大
- c++ - 从dll调用游戏函数时访问冲突
- java - 在java中获取字符串输入时出错
- sql - 当插入的值大于列长度时,插入到 SQL Server 表中的值不正确
- php - 在php中获取两个关联数组的和和差