“$<;-”中出现错误。data.frame`(`*tmp*`,R的循环

“$<;-”中出现错误。data.frame`(`*tmp*`,R的循环,r,R,早上好 我的自行车有问题 我的数据帧是: Name_FD Column_A Column_B Column_C Column_D Column_X Element1 8808864430 88440000011863 Text1 *NA* Element2 8808877431 88455000045863 Text2 *NA* Element3 8808886677 88447800011865 Text3

早上好

我的自行车有问题

我的数据帧是:

Name_FD

Column_A   Column_B       Column_C    Column_D  Column_X
Element1  8808864430  88440000011863    Text1      *NA*
Element2  8808877431  88455000045863    Text2      *NA*
Element3  8808886677  88447800011865    Text3      *NA*
Element4  8808888830  88455000045867    Text4      *NA*
Element5  8808888830  88440000011869    Text5      *NA*
Element6  8808888830  88455000045810    Text6      *NA*
Element7  8808889977  88447800011865    Text3      *NA*
Element7  8808889977  88447800011865    Text3      *NA*
我的代码是:

Name_FD$Column_X <- rep(NA, length(Name_FD$Column_B))
for (i in Name_FD$Column_B){
 for ( j in Name_FD$Column_B[-1,]) {
    if(i == j) {
      Fonte_Dati$x[i]= 1 
    } else {
      Fonte_Dati$x[i]= 0
   }
 }
}

Name\u FD$Column\u X我认为有一种更简单的方法:)

Name\u FD%mutate(列X=ifelse(列B==lead(列B),1,0))
#列A列B列C列D列X
#1元素1 880846440 8.84400e+13文本1 0
#2元素2 880877431 8.84550e+13文本2 0
#3元素3 88086677 8.84478e+13文本3 0
#4元素4 88088830 8.84550e+13文本4 1
#5元素5 88088830 8.84400e+13文本5 1
#6元素6 88088830 8.84550e+13文本6 0
#7要素7 88089977 8.84478e+13文本3 1
#8元素7 88089977 8.84478e+13文本3 NA

您是否可以将
dplyr
lead
lag
ifelse
结合使用<代码>名称\u FD%>%变异(列\u X=ifelse(列\u B==lead(列\u B),1,0))
将替换整个代码above@Wimpel谢谢你的评论。我不是专家,因为我在学习R。我问这个问题是因为我想理解逻辑并超越我的极限。“如果你有什么建议,我想深入研究一下。”弗朗西斯科曾经去过那里。。。当你已经有了编程经验而学习R时,最难做的事情就是放开For循环(在大多数情况下):)就像我6分钟前建议的;-)(看评论)啊,对不起,在我写这篇文章的时候,我没有看到你的评论!弗朗西索,你应该接受温佩尔的回答别担心。。总是发生在我身上:)。有趣的是,我这次站在另一边。。我把我的命令升级为一个答案。。。因此,如果您愿意,您可以删除您的答案,以保持stackoverflow“干净”。您的解决方案清晰简单。我已经在我的代码中实现了这个解决方案,它运行得非常好。再次感谢您提供的解决方案,并为我指点图书馆的小摆设。
Error in Name_FD$Column_B[-1, ] : incorrect number of dimensions

Error in `$<-.data.frame`(`*tmp*`, "Column_X", value = c(NA, NA, NA, NA, NA,  : 
replacement has 16669 rows, data has 16668
library(dplyr)

Name_FD %>% 
  mutate(Column_X = ifelse(Column_B == lead(Column_B), 1, 0)
Name_FD <- read.table( text = "Column_A   Column_B       Column_C    Column_D
Element1  8808864430  88440000011863    Text1
Element2  8808877431  88455000045863    Text2
Element3  8808886677  88447800011865    Text3
Element4  8808888830  88455000045867    Text4
Element5  8808888830  88440000011869    Text5
Element6  8808888830  88455000045810    Text6
Element7  8808889977  88447800011865    Text3
Element7  8808889977  88447800011865    Text3", header = TRUE)

library(tidyverse)
Name_FD %>% mutate( Column_X = ifelse( Column_B == lead( Column_B ), 1, 0 ) )
#   Column_A   Column_B    Column_C Column_D Column_X
# 1 Element1 8808864430 8.84400e+13    Text1        0
# 2 Element2 8808877431 8.84550e+13    Text2        0
# 3 Element3 8808886677 8.84478e+13    Text3        0
# 4 Element4 8808888830 8.84550e+13    Text4        1
# 5 Element5 8808888830 8.84400e+13    Text5        1
# 6 Element6 8808888830 8.84550e+13    Text6        0
# 7 Element7 8808889977 8.84478e+13    Text3        1
# 8 Element7 8808889977 8.84478e+13    Text3       NA