R 如果语句错误,I';我错过了一些简单的事情

R 如果语句错误,I';我错过了一些简单的事情,r,if-statement,R,If Statement,大家好 我真的很抱歉,我来这里是为了这个问题,但我在这里错过了一些非常基本的东西。我已经从下载了ascii文件。我将这些数据重新设置为只包含我感兴趣的列和行。现在我要做的就是用长格式的状态名称替换短的“状态”名称。我需要长格式的状态名来输入我编写的另一个函数 如果你不想下载这个文件,我会尝试大致复制data.frame # If data file was downloaded. gazet <- read.table('file location', sep = ',

大家好

我真的很抱歉,我来这里是为了这个问题,但我在这里错过了一些非常基本的东西。我已经从下载了ascii文件。我将这些数据重新设置为只包含我感兴趣的列和行。现在我要做的就是用长格式的状态名称替换短的“状态”名称。我需要长格式的状态名来输入我编写的另一个函数

如果你不想下载这个文件,我会尝试大致复制data.frame

    # If data file was downloaded.
    gazet <-   read.table('file location', sep = ',')
    gazet <- gazet[,c(2:6, 8, 10, 14)]
    colnames(gazet) <- c('recID', 'authID', 'state', 'name', 'feature',
                         'postcode', 'lon', 'lat')

    towns <- gazet[which(gazet$feature %in% c('LOCB', 'SUB', 'URBN', 'POPL')
                 & !gazet$state %in% c('JBT', 'NFK', 'MCD', 'HRD', 'AAT', 'N/A')),]

    # If you don't want to download the file.
    towns <- data.frame('recID' = c('G62', 'G63', 'G64'), 
                        'state' = c('QLD', 'SA', 'VIC'),
                        'name'  = c('Balgal Beach', 'Balhannah', 'Ballan'),
                        'feature' = c('POPL', 'POPL', 'POPL'))

    # Using whichever towns you prefer, first I change state to character
    # so that it can be changed.
    towns$state <- as.character(towns$state)

    state_longform <- function(x){
      for (i in 1:length(x$state)){
        if (x[i, 'state'] == 'VIC'){
           x[i, 'state'] <- 'Victoria'
        } else{ x[i, 'state'] == 'NA'}
      }
    } 

    state_longform(towns)
    head(towns)
#如果数据文件已下载。

gazet您需要从函数返回更改的值

state_longform <- function(x){
  for (i in 1:length(x$state)){
    if (x[i, 'state'] == 'VIC'){
       x[i, 'state'] <- 'Victoria'
    } else{ x[i, 'state'] == 'NA'}
  }
  return(x)
} 

state_longform您需要从函数返回更改的值

state_longform <- function(x){
  for (i in 1:length(x$state)){
    if (x[i, 'state'] == 'VIC'){
       x[i, 'state'] <- 'Victoria'
    } else{ x[i, 'state'] == 'NA'}
  }
  return(x)
} 

state_longform您需要从函数返回更改的值

state_longform <- function(x){
  for (i in 1:length(x$state)){
    if (x[i, 'state'] == 'VIC'){
       x[i, 'state'] <- 'Victoria'
    } else{ x[i, 'state'] == 'NA'}
  }
  return(x)
} 

state_longform您需要从函数返回更改的值

state_longform <- function(x){
  for (i in 1:length(x$state)){
    if (x[i, 'state'] == 'VIC'){
       x[i, 'state'] <- 'Victoria'
    } else{ x[i, 'state'] == 'NA'}
  }
  return(x)
} 

state\u longform你能不能改成这样

towns[towns$state == "VIC", ]$state <- "Victoria"

你能改成这样吗

towns[towns$state == "VIC", ]$state <- "Victoria"

你能改成这样吗

towns[towns$state == "VIC", ]$state <- "Victoria"

你能改成这样吗

towns[towns$state == "VIC", ]$state <- "Victoria"


不确定这是否是它,但我会将
x[I,'state']=='NA'
移到下一行,并将其结尾
}
移到下一行。使用“NA”作为值可能会非常混乱。这与
NA
不同。当你说
else{x[i,'state']='NA'}
时,你没有分配任何东西-你只是在评估一个语句,对它什么也不做。更重要的是,
towns
通过复制而不是引用传递给
state\u longform
。所以你不是在编辑你认为你是的数据框,你只是在编辑一个名为
x
的数据框副本,然后在函数结束时扔掉
x
。谢谢大家,我会把它作为复制与引用来传递。在你指出之前,我肯定不知道这一点,我以为城镇会作为参考来传递。不确定是否是这样,但我会将
x[I,'state']==“NA”
移到下一行,然后将其结尾移到下一行。使用“NA”作为值可能会让人非常困惑。这与
NA
不同。当你说
else{x[i,'state']='NA'}
时,你没有分配任何东西-你只是在评估一个语句,对它什么也不做。更重要的是,
towns
通过复制而不是引用传递给
state\u longform
。所以你不是在编辑你认为你是的数据框,你只是在编辑一个名为
x
的数据框副本,然后在函数结束时扔掉
x
。谢谢大家,我会把它作为复制与引用来传递。在你指出之前,我肯定不知道这一点,我以为城镇会作为参考来传递。不确定是否是这样,但我会将
x[I,'state']==“NA”
移到下一行,然后将其结尾移到下一行。使用“NA”作为值可能会让人非常困惑。这与
NA
不同。当你说
else{x[i,'state']='NA'}
时,你没有分配任何东西-你只是在评估一个语句,对它什么也不做。更重要的是,
towns
通过复制而不是引用传递给
state\u longform
。所以你不是在编辑你认为你是的数据框,你只是在编辑一个名为
x
的数据框副本,然后在函数结束时扔掉
x
。谢谢大家,我会把它作为复制与引用来传递。在你指出之前,我肯定不知道这一点,我以为城镇会作为参考来传递。不确定是否是这样,但我会将
x[I,'state']==“NA”
移到下一行,然后将其结尾移到下一行。使用“NA”作为值可能会让人非常困惑。这与
NA
不同。当你说
else{x[i,'state']='NA'}
时,你没有分配任何东西-你只是在评估一个语句,对它什么也不做。更重要的是,
towns
通过复制而不是引用传递给
state\u longform
。所以你不是在编辑你认为你是的数据框,你只是在编辑一个名为
x
的数据框副本,然后在函数结束时扔掉
x
。谢谢大家,我会把它作为复制与引用来传递。这肯定是我在你指出之前不知道的事情,我以为城镇会作为参考来传递。@6pool:OP问他的功能有什么问题。OP期望函数在适当的位置更改对象,而R没有这样做。这就是为什么需要
return()
。它仍然需要分配回对象。R可以使用
来完成这项工作,谢谢各位,从上面的评论中我意识到{}是不正确的。我已经删除了它并包含了return(x),当我分配这个函数时,我得到了一个我满意的数据帧。我现在将研究如何将内容作为副本或引用进行传递。@6pool:OP正在询问他的函数有什么问题。OP期望函数在适当的位置更改对象,而R没有这样做。这就是为什么需要
return()
。它仍然需要分配回对象。R可以使用
来完成这项工作,谢谢各位,从上面的评论中我意识到{}是不正确的。我已经删除了它并包含了return(x),当我分配这个函数时,我得到了一个我满意的数据帧。我现在将研究如何将内容作为副本或引用进行传递。@6pool:OP正在询问他的函数有什么问题。OP期望函数在适当的位置更改对象,而R没有这样做。这就是为什么需要
return()
。它仍然需要分配回对象。R可以使用
来完成这项工作,谢谢各位,从上面的评论中我意识到{}是不正确的。我已经删除了它并包含了return(x),当我分配这个函数时,我得到了一个我满意的数据帧。我