【发布时间】:2014-12-05 11:33:50
【问题描述】:
我有一个清单,可以说:
dataSet$mixed_bag <- list("Hello", c("USA", "Red", "100"), c("India", "Blue", "76"))
我想遍历这个列表并根据列表的内容创建新变量。 伪代码看起来像这样。
foreach row in dataSet$mixed_bag {
if (sapply(dataSet$mixed_bag, length) == 3) {
dataSet$country <- dataSet$mixed_bag[[row]][1];
dataSet$color <- dataSet$mixed_bag[[row]][2];
dataSet$score <- dataSet$mixed_bag[[row]][3];
} else if (sapply(dataSet$mixed_bag, length) == 2) {
#Do something else
} else {
# Do nothing
}
}
请建议我如何在 R 中执行此操作
【问题讨论】:
-
你试过
lapply吗? -
我做到了。我是 R 新手。所以,我不知道如何使用迭代器变量(在本例中为:row)来构建正确的语法。如果您有答案,请将其作为答案发布在下面。
-
您可以将
dput(dataSet)的输出添加到帖子中吗? -
这真的取决于你想在循环中做什么..你的意思是写
length(dataSet$mixed_bag[[row]])而不是sapply(dataSet$mixed_bag, length)?if中的条件以它的编写方式没有意义,因为它将向量与值进行比较,在这种情况下,您会收到警告,指出仅使用向量的第一个元素。 -
是的。我的意思是长度(dataSet$mixed_bag[[row]])