【问题标题】:Unable to create a new column in dataframe based on another column R Shiny无法根据另一列 R Shiny 在数据框中创建新列
【发布时间】:2021-11-10 04:39:59
【问题描述】:

我有一个数据框,我在其中创建新列。其中一些依赖于现有的列。如果我在没有任何二进制操作的情况下基于现有列创建新列,则它可以正常工作。但是,如果我尝试基于对现有列的某些二元运算创建新列,则会出现错误。这是我的代码:

d9 = data1 //data1 is a dataframe
    d9['A/B/C'] <- numeric()
    d9['A'] <- d9$INTERVAL
    d9['B'] <-  0.75*d9$INTERVAL
    d9['C'] <- 1

这是错误:

0.75 * d9$INTERVAL 中的错误:二元运算符的非数字参数

我也试过了:

d9['B'] <-  as.numeric(0.75*d9$INTERVAL)

但我仍然遇到同样的错误。

【问题讨论】:

  • 什么是d9$INTERVAL?从错误看来,它不是数字。如果您创建一个小的可重现示例以及预期的输出,则更容易提供帮助。阅读how to give a reproducible example
  • 这是一个基于它创建两个新列的列。假设 INTERVAL 是数据框中的唯一列,并且新列是在它之上创建的。例如间隔 = 10 A/B/C = 2 A = 10 , B = 7.5, C =1 间隔 = 20 A/B/C = 4 A = 20 , B = 15, C =1 间隔 = 40 A/B/C = 6 A = 40 , B = 30, C =1

标签: r dataframe shiny rstudio-server


【解决方案1】:

我想如果你只有一列。

R 强制转换为尽可能低的维度。

所以添加drop=FALSE(默认为drop=TRUE)就可以了。

反过来:如果您至少有两列,那么您的代码在没有drop=FALSE 的情况下也可以工作:

这是mtcars 数据集的示例

d9 <- mtcars[,1, drop=FALSE]
d9
new_cols <-  c("A", "B", "C")
d9[new_cols] <- NA
d9

d9["A"] <- d9$mpg
d9["B"] <- d9$mpg*0.75
d9["C"] <- 1
d9

输出:

                     mpg    A      B C
Mazda RX4           21.0 21.0 15.750 1
Mazda RX4 Wag       21.0 21.0 15.750 1
Datsun 710          22.8 22.8 17.100 1
Hornet 4 Drive      21.4 21.4 16.050 1
Hornet Sportabout   18.7 18.7 14.025 1
Valiant             18.1 18.1 13.575 1
Duster 360          14.3 14.3 10.725 1
Merc 240D           24.4 24.4 18.300 1
Merc 230            22.8 22.8 17.100 1
Merc 280            19.2 19.2 14.400 1
Merc 280C           17.8 17.8 13.350 1
....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多