为什么找不到新的数据帧?

Why the is the new dataframe not found?

提问人:peter 提问时间:10/26/2023 更新时间:10/26/2023 访问量:54

问:

我正在尝试从某人的研究中重现代码。到目前为止,我只是试图分解将日期重塑为单个部分的功能,以了解它到底做了什么。尝试基于原始“data”创建名为“datarule”的新数据帧时,出现“错误:找不到对象'datarule'”。这是怎么回事?可能是一件微不足道的事情,但非常感谢您的帮助。

这是我的 R 代码:

data$test = as.logical(data$test) #convert 'test' col to boolean type True/False

max_learn_block <- max(data[!data$test, "block"])
data <- data %>%
  mutate(block=ifelse(test, max_learn_block+1, block))

datarule <- data %>% 
  mutate(block=block+1) %>% 
  
head(datarule)

以下是原始函数代码:

  if (combine_test) {
    max_learn_block <- max(data[!data$test, "block"])
    data <- data %>%
      mutate(block=ifelse(test, max_learn_block+1, block))
  }
  datarule <- data %>%
    mutate(block=block+1) %>%

提前致谢!

R DataFrame 数据操作

评论


答:

0赞 cnolte 10/26/2023 #1

嗯,这取决于你在做什么。

试着只做

    datarule <- data %>% 
         mutate(block=block+1) 
    head(datarule)

问题很可能是您在创建它之前就引用了它。似乎还有一个无处可去的悬管操作员()。在上面的代码中,您首先通过 mutating 创建,然后第二行打印出前六行datarule%>%dataruledata

评论

0赞 peter 10/26/2023
感谢您的帮助,我是新手,所以我仍在学习语法。“datarule <-data”不是创建了数据规则结构,以便我可以在那之后引用它吗?如果不是,那是什么?当我要添加代码以进一步修改数据规则数据帧时,如何将其保存到 csv 文件以查看修改状态?
0赞 user2554330 10/26/2023
@jpsmith:评论太长了,不可能在评论中放多行代码。
0赞 user2554330 10/26/2023
@peter:否,代码中求值的表达式是 。在创建之前对整个事物进行评估。除非它不能,因为它使用 ,而 尚不存在。data %>% mutate(block=block+1) %>% head(datarule)dataruledatarule
4赞 user2554330 10/26/2023 #2

代码末尾的行是

datarule <- data %>% 
  mutate(block=block+1) %>% 

head(datarule)

由于第二行以管道运算符结尾,最后一行被视为整个表达式的一部分。但尚未创建,因此您会看到错误。%>%datarule

要解决此问题,只需将管道留在第 2 行的末端即可。%>%