【发布时间】:2014-08-13 12:32:04
【问题描述】:
我在 R 中有以下数据:
dat <- read.table(text="
city var value
a var1 0.19
b var1 0.67
c var1 0.19
a var2 0.14
b var2 0.38
c var2 0.27
a var3 0.59
b var3 0.42
c var3 0.27
a var4 0.28
b var4 0.37
c var4 0.91
", header=TRUE)
我需要创建城市 b 与其他城市的不同数据框(例如城市 b 与城市 a,城市 b 与城市 c 等)。 Andrie 设法通过lapply 函数实现了这一点。
lapply(
setdiff(levels(dat$city), "b"),
function(i){
ret <- dat[dat$city %in% c("b", i), ]
ret[order(ret$var, ret$city), ]
})
然后我得到了我需要的输出,但我不知道如何将每个 [[i]] 保存为不同的数据帧。例如。 [[1]] 将是 citybcitya,[[2]] 将是 citybcityc,等等。
[[1]]
city var value
2 b var1 0.67
1 a var1 0.19
5 b var2 0.38
4 a var2 0.14
8 b var3 0.42
7 a var3 0.59
11 b var4 0.37
10 a var4 0.28
[[2]]
city var value
2 b var1 0.67
3 c var1 0.19
5 b var2 0.38
6 c var2 0.27
8 b var3 0.42
9 c var3 0.27
11 b var4 0.37
12 c var4 0.91
如果没有 for 循环,我如何实现它?
【问题讨论】:
标签: r for-loop dataframe apply lapply