无法根据另一个列在数据框中创建新列



我有一个数据框架,我在它上面创建新的列。其中一些依赖于现有的列。如果我在现有列的基础上创建一个新列,而不需要任何二进制操作,它就能正常工作。但是,如果我尝试基于现有列的某些二进制操作创建一个新列,就会得到一个错误。下面是我的代码:

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)

但是我仍然得到相同的错误。

我想如果你只有一列。

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
....

相关内容

  • 没有找到相关文章

最新更新