【发布时间】:2021-06-25 23:51:10
【问题描述】:
我想更改从循环中采样的列中属性的名称。在第一个for 循环中,我从我的整个数据集中抽取一个样本,在第二个for 循环中,将此样本放在我创建的一个空数据框中。除了重命名代码外,一切都按我的需要运行。我的重命名解决方案几乎可以工作,但我需要按从 1 到 9 的顺序重命名。
使用虚拟数据:
AllFruit <- read.table("AllFruitData.txt")
for (i in 1:1000) {
Fruit.sample <- sample(AllFruit$Weight, size = 9, replace = TRUE) #create a sample based on weight of fruit
WeightSample <- NULL #create an empty dataframe
for (k in 1:length(Fruit.sample)) {
WeightSample = rbind(WeightSample, AllFruit[which(AllFruit$Weight == Fruit.sample[k]),])
}
}
这会产生什么:
WeightSample
Type Color Weight
Apple Red 5
Banana Yellow 5
Apple Red 5
Apple Red 9
Banana Yellow 9
Orange Orange 7
Pear Green 3
Banana Yellow 8
Pear Green 6
Pear Green 2
Banana Yellow 1
Pear Green 1
Pear Green 4
我需要什么:
Type Color Weight
Apple Red 1
Banana Yellow 1
Apple Red 1
Apple Red 2
Banana Yellow 2
Orange Orange 3
Pear Green 4
Banana Yellow 5
Pear Green 6
Pear Green 7
Banana Yellow 8
Pear Green 8
Pear Green 9
要重命名我的权重列中的权重,我推断我需要更改箭头的右侧,因为当我将其添加到 rbind 行之后的第二个循环中时:
WeightSample[WeightSample$Weight == Fruit.sample[k], "Weight"] <- 13
我明白了:
Type Color Weight
Apple Red 13
Banana Yellow 13
Apple Red 13
Apple Red 13
Banana Yellow 13
Orange Orange 13
Pear Green 13
Banana Yellow 13
Pear Green 13
Pear Green 13
Banana Yellow 13
Pear Green 13
Pear Green 13
我尝试了一些选项,例如seq(1:9),但出现替换错误。由于我要采样 1000 次,因此我需要一个解决每个新样本重量的解决方案。谢谢!
【问题讨论】:
-
你好,老兄!您可以使用
dput(AllFruit)并将输出复制粘贴到您的问题中吗?这将允许人们轻松加载您使用的完全相同的数据并更轻松地回答您的问题。有关详细信息,请参阅此链接:stackoverflow.com/questions/5963269/…