yf1<- xiaoshou_temp %>% mutate(ywy_df_name) Error in `mutate()`: ℹ In argument: `ywy_df_name`. Caused by error: ! object 'ywy_df_name' not found Run `rlang::last_trace()` to see where the error occurred.
时间: 2024-02-17 10:00:39 浏览: 112
在这个代码中,你没有给 `mutate()` 函数提供任何的变量或表达式,因此它无法对数据框进行任何操作。`mutate()` 函数需要输入一个列名和一个表达式,例如 `mutate(new_col = old_col * 2)`。如果你想要在 `xiaoshou_temp` 数据框中添加一个名为 `ywy_df_name` 的新列,你需要对 `mutate()` 函数进行修改,例如:
```
yf1 <- xiaoshou_temp %>% mutate(ywy_df_name = "your_value")
```
这个代码将在 `xiaoshou_temp` 数据框中添加一个名为 `ywy_df_name` 的新列,并将所有行中的值设置为 "your_value"。你可以将 "your_value" 替换为任何你需要的值或表达式。
相关问题
class Good: def init(self,id,num): self.id=id self.__num=num self.gooddict={} self.goodlist=[] def add(self): # 进货批处理 while True: id=input("请输入需要购买的商品(0-退出):") if id == "0": return num = eval(input(f"请输入 {id:s} 的进货数目:")) price = eval(input(f"请输入 {id:s} 的进货价格:")) goods=Goods(id,num,price) self.goodsdict[id] = goods print(goodsdict) class xiaoshou: def init(self,id): self.id=id self.xiaosdict = {} self.xiaoslist=[] def xiaos(self): while True: id = input("请输入商品(0-退出):") if id == "0": return num = int(input("请输入数量:")) price=eval(input("请输入商品价格:")) self.xiaoslist.append([price, num]) self.xiaosdict[id]=xiaoslist @property # 定义setter访问器 def num(self): return self.__num @num.setter # 定义只写访问器 def num(self, num): # amount 为负数表示取款 if num < 0 and num > self.__num: print("商品的数目不足!") return -1 self.__num += num return self.__num def mainmenu(self): while True: print("" * 45) print(" 1.进货系统 2.销售系统") print("" * 45) sele = int(input("请输入功能号:")) if sele == 1: self.add() elif sele == 2: self.add() elif sele == 0: return如何优化代码,请输出优化后的代码
以下是优化后的代码:
```
class Good:
def __init__(self, id, num):
self.id = id
self.num = num
self.goodsdict = {}
def add(self):
# 进货批处理
while True:
id = input("请输入需要购买的商品(0-退出):")
if id == "0":
return
if id in self.goodsdict:
num = int(input(f"请输入 {id:s} 的进货数目:"))
price = eval(input(f"请输入 {id:s} 的进货价格:"))
self.goodsdict[id].num += num
else:
num = int(input(f"请输入 {id:s} 的进货数目:"))
price = eval(input(f"请输入 {id:s} 的进货价格:"))
goods = Good(id, num)
self.goodsdict[id] = goods
print(self.goodsdict)
class Xiaoshou:
def __init__(self, id):
self.id = id
self.xiaosdict = {}
def xiaos(self):
while True:
id = input("请输入商品(0-退出):")
if id == "0":
return
num = int(input("请输入数量:"))
price = eval(input("请输入商品价格:"))
if id in self.xiaosdict:
self.xiaosdict[id].append([price, num])
else:
self.xiaosdict[id] = [[price, num]]
@property
def num(self):
return self.__num
@num.setter
def num(self, num):
# amount 为负数表示取款
if not isinstance(num, int):
print("请输入数字类型!")
return -1
if num < 0 and num > self.__num:
print("商品的数目不足!")
return -1
self.__num += num
return self.__num
def mainmenu():
good = Good("good1", 100)
xiaoshou = Xiaoshou("xiaoshou1")
while True:
print("" * 45)
print(" 1.进货系统 2.销售系统")
print("" * 45)
sele = int(input("请输入功能号:"))
if sele == 1:
good.add()
elif sele == 2:
xiaoshou.xiaos()
elif sele == 0:
return
if __name__ == "__main__":
mainmenu()
```
优化点:
1. 将 Good 类的 goodlist 属性删除,因为没有使用到。
2. 在 Good 类的 add 方法中,如果输入的 id 不存在于商品字典中,应该创建一个新的 Goods 对象,并将商品字典中的 id 和新的 Goods 对象关联起来。
3. 在 Good 类的 add 方法中,如果输入的 id 已经存在于商品字典中,应该将新的进货数目和价格加入到已有的 Goods 对象中。
4. 在 Xiaoshou 类的 xiaos 方法中,如果输入的 id 已经存在于销售字典中,应该将新的销售数量和价格加入到已有的销售列表中。
5. 在 Good 类的 num 属性的 setter 方法中,添加对输入参数类型的检查。
6. 在 mainmenu 函数中,创建 Good 和 Xiaoshou 对象,并在循环中调用相应的方法。
7. 添加 `if __name__ == "__main__":` 判断,使得代码可以被其他模块导入时不执行。
class Yao{ public: char bh[10]; char name[30]; int danjia; int shuliang; int xiaoshou; void dayin(){ printf("%10s %10s %10d %10d %10d\n",bh,name,danjia,shuliang,xiaoshou); } }; Yao yao[1000]; int num = 0;采用基数排序,对yao数组按照元素的bh属性进行排序
以下是基数排序的实现代码:
```
void radixSort(Yao arr[], int n) {
// 找到最大的bh长度
int maxLen = strlen(arr[0].bh);
for (int i = 1; i < n; i++) {
int len = strlen(arr[i].bh);
if (len > maxLen) {
maxLen = len;
}
}
// 对每一位进行排序
for (int i = maxLen - 1; i >= 0; i--) {
// 计算每个桶中元素的个数
int count[10] = {0};
for (int j = 0; j < n; j++) {
int digit = (i < strlen(arr[j].bh)) ? (arr[j].bh[i] - '0') : 0;
count[digit]++;
}
// 计算每个桶中元素的位置
int position[10] = {0};
for (int j = 1; j < 10; j++) {
position[j] = position[j - 1] + count[j - 1];
}
// 将元素按照当前位放入桶中
Yao temp[n];
for (int j = 0; j < n; j++) {
int digit = (i < strlen(arr[j].bh)) ? (arr[j].bh[i] - '0') : 0;
temp[position[digit]] = arr[j];
position[digit]++;
}
// 将排序后的元素复制回原数组
for (int j = 0; j < n; j++) {
arr[j] = temp[j];
}
}
}
```
调用方式:
```
radixSort(yao, num);
```
说明:该基数排序的时间复杂度为 O(d*(n+k)),其中 d 为最大的 bh 长度,k 为每一个桶中元素的个数(在该代码中固定为 10)。
阅读全文