new_data2 <- merge(new_data2,new_data2 %>% transmute(Percent.Non.Electric.Vehicl = Non.Electric.Vehicle.Total/Total.Vehicles),by = c("Region", "State")) Error in fix.by(by.x, x) : 'by'必需指定唯一有效的列
时间: 2024-04-21 09:29:59 浏览: 23
这个错误可能是由于在by参数中指定的列名称不唯一或者在数据框中不存在这些列导致的。请检查一下数据框中是否存在名为"Region"和"State"的列,如果存在,确保这两列的值组合起来是唯一的。如果存在重复值,可以考虑使用其他列作为合并的依据,或者通过去除重复值来解决问题。另外,也可以尝试将by参数的值改为一个长度为2的向量,例如by = c("Region", "State")。
相关问题
> new_data2 <- transform(new_data2, Percent.Non.Electric.Vehicl = (Non.Electric.Vehicle.Total/Total.Vehicles)) > ncol(new_data2) [1] 9 > new_data2 <- cbind(new_data2[1:9], Percent.Non.Electric.Vehicl = Percent.Non.Electric.Vehicl, new_data2[10:ncol(new_data2)]) Error: object 'Percent.Non.Electric.Vehicl' not found
这个错误提示是因为在 `cbind()` 函数中的 `Percent.Non.Electric.Vehicl` 变量未被定义。在 `transform()` 函数中定义的变量默认只存在于该函数中,并不会被保留下来。
你需要把 `transform()` 函数中创建的新变量与原始数据合并,然后再使用 `cbind()` 函数将它们组合起来。可以使用 `merge()` 函数或者 `dplyr` 包中的 `mutate()` 函数来实现。
示例代码:
```R
library(dplyr)
new_data2 <- merge(new_data2,
new_data2 %>%
transmute(Percent.Non.Electric.Vehicl = Non.Electric.Vehicle.Total/Total.Vehicles),
by = c("Region", "State"))
# 或者使用 mutate() 函数
new_data2 <- new_data2 %>%
mutate(Percent.Non.Electric.Vehicl = Non.Electric.Vehicle.Total/Total.Vehicles)
# 最后使用 cbind() 函数组合
new_data2 <- cbind(new_data2[, 1:9],
new_data2[, ncol(new_data2)],
new_data2[, 10:(ncol(new_data2)-1)])
```
运行以下代码时:library(caret) # define cross-validation method control <- trainControl(method="cv", number=10) # fit linear regression models and compute CV error lm1 <- train(y1 ~., data=data, method="lm", trControl=control) lm2 <- train(y2 ~., data=data, method="lm", trControl=control) lm3 <- train(y3 ~., data=data, method="lm", trControl=control) cv_error1 <- lm1$results$RMSE cv_error2 <- lm2$results$RMSE cv_error3 <- lm3$results$RMSE。发生以下错误:Error in data[, all.vars(Terms), drop = FALSE] : subscript out of bounds。请修改原代码
这个错误通常是由于模型中使用的变量不在数据集中引起的。因此,您需要检查以下几个方面:
1. 检查模型中使用的变量是否都在数据集中存在,包括变量名的大小写是否一致。
2. 检查数据集的维度是否符合要求,例如是否存在缺失值或者某个维度的长度不正确。
3. 如果使用了多个数据集,需要检查它们的维度是否一致,或者使用 `merge` 函数将它们合并为一个数据集。
另外,如果您使用的是 R 4.1.0 版本,可能还需要添加 `stringsAsFactors = FALSE` 参数,以避免发生数据类型转换错误。因此,以下是可能的修改后的代码:
```
library(caret)
# define cross-validation method
control <- trainControl(method="cv", number=10)
# fit linear regression models and compute CV error
lm1 <- train(y1 ~., data=data, method="lm", trControl=control, stringsAsFactors = FALSE)
lm2 <- train(y2 ~., data=data, method="lm", trControl=control, stringsAsFactors = FALSE)
lm3 <- train(y3 ~., data=data, method="lm", trControl=control, stringsAsFactors = FALSE)
cv_error1 <- lm1$results$RMSE
cv_error2 <- lm2$results$RMSE
cv_error3 <- lm3$results$RMSE
```
如果还出现错误,请提供更多信息,我会尽力帮助您解决问题。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)