我正在使用MacBook;我正在运行最新版本的R。
我是R.的新手。
我有一个加载到变量数据中的数据框。
mpg cyl disp hp drat
Mazda RX4 21.0 6 160 110 3.90
Mazda RX4 Wag 21.0 6 160 110 3.90
Datsun 710 22.8 4 108 93 3.85
Hornet 4 Drive 21.4 6 258 110 3.08
Hornet Sportabout 18.7 8 360 175 3.15
Valiant 18.1 6 225 105 2.76
wt qsec vs am gear
Mazda RX4 2.620 16.46 0 1 4
Mazda RX4 Wag 2.875 17.02 0 1 4
Datsun 710 2.320 18.61 1 1 4
Hornet 4 Drive 3.215 19.44 1 0 3
Hornet Sportabout 3.440 17.02 0 0 3
Valiant 3.460 20.22 1 0 3
carb
Mazda RX4 4
Mazda RX4 Wag 4
Datsun 710 1
Hornet 4 Drive 1
Hornet Sportabout 2
Valiant 1
我有一项任务,需要创建一个包含“hp”除以“wt”的向量。必须使用for循环完成。这是我能够达到的目的。
> hp_wt <-c(for(i, data) {hp/wt})
Error: unexpected ',' in "hp_wt <-c(for(i,"
> f<- for (i in data) {data$hp/data$wt}
> f
NULL
> for (i in data) {data$hp/data$wt}
> f<- c(for (i in data) {data$hp/data$wt})
> f
NULL
非常感谢任何帮助。
谢谢,
答案 0 :(得分:1)
R data.frames
中的列可以像这样轻松划分:
data$hp / data$wt
此外,您可以将结果向量分配给新列:
data$hp_wt <- data$hp / data$wt
因此,您不需要遍历所有行。
答案 1 :(得分:0)
Loki的方式是在实践中解决问题的正确方法。
但如果你真的坚持使用for循环,那么:
powerToWeight <- NULL
temp <- NULL
# for each row in the dataset
for (i in 1:nrow(data))
{
# calculate hp/wt ratio for a given observation
temp <- as.numeric(data[i, "hp"])/as.numeric(data[i, "wt"])
# attach the ratio to previously calculated values
powerToWeight <- c(powerToWeight, temp)
}
# attach the calculated vector to the original dataset
data$hpToWt <- powerToWeight
......是其中一种方法。
答案 2 :(得分:0)
虽然我非常同意@loki你不需要在R中编写一个where y_id = any (values (1625, 1871, ..., 1640, 1643, 13291, 1458, 13304, 1407, 1765) )
循环来划分数据帧的两个向量或列,但OP明确要求使用{ {1}}循环。所以,这是一个:
for
然而,以下基准测试显示这不是一个非常好的主意w.r.t.性能:
for
R中的hp_wt <- numeric(0)
for (i in seq.int(nrow(data))) {
hp_wt[i] <- with(data[i, ], hp / wt)
}
循环比矢量计算慢约40倍。