簡體   English   中英

`$<-.data.frame` 中的錯誤(`*tmp*`,R 循環

[英]Error in `$<-.data.frame`(`*tmp*`, cycle for 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      *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
   }
 }
}

錯誤是:

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

Column_B 從最小到最大排序。

例如,我想知道 Colum_B [3,] 的元素是否與 Column_B[4,] 的元素相等。

如果這是真的,我想在 Column_X (在 Column_B[4,] 的元素的同一行)中插入 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

我認為有一種更簡單的方法可以做到這一點:)

library(dplyr)

Name_FD %>% 
  mutate(Column_X = ifelse(Column_B == lead(Column_B), 1, 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM