【发布时间】:2018-11-26 05:48:20
【问题描述】:
我想从带有systemName 变量和popNum 变量的数据帧中获取输入,并使用它来生成一个命名的向量列表,其元素是随机数(1-6)*5 即 (5, 10, 15, 20, 25, 30) 其中向量长度等于系统的popNum。
以下代码有效:
## Data
#Create a vector of integers
popNum <- c (2,5,3,9)
#Create corresponding names
systemNames <- c("Ruie", "Regina", "Roupe", "Efate")
# form up into a recatangular data frame
dataSource <- cbind.data.frame(systemNames,popNum )
## Create and Fill the List
#initialise the list
availableCargoes <- vector( mode = "list", length = nrow(dataSource))
#name the list
names(availableCargoes) <- dataSource$systemNames
#fill the list
for (loopCounter in 1:nrow(dataSource)) {
availableCargoes[[loopCounter]] <- sample.int( n = 6,
size = dataSource$popNum[loopCounter],
replace = TRUE) * 5
}
如何通过 apply 系列或 purrr 包中的某些内容摆脱 for 循环?我很难解决的问题是X 是lapply 运行sample.int 的原因吗?如何将popNum 的向量作为参数传递来控制结果向量的大小?
【问题讨论】:
-
data.frame(systemNames, popNum )就够了,不用cbind。