【发布时间】:2014-09-04 12:58:18
【问题描述】:
我正在尝试创建一个 for 循环,将字符串附加到数据框中的每个数据点。我正在使用 for 循环,因为数据框可能会随列数而变化。这是可能的数据框的示例。
lexicon <- data.frame(
X.lx = c("word", "word2", "word3"),
X.ph = c("phonetic", "", "phonetic2")
)
我设法创建了一个循环,该循环采用列的名称并将其附加到数据点(数据存储在数据框lexicon:
for(i in names(lexicon)){
lexicon[[i]] <- sub("^", paste(names(lexicon[i]), " ", sep=""), lexicon[[i]])
}
这会产生:
X.lx X.ph
1 X.lx word X.ph phonetic
2 X.lx word2 X.ph
3 X.lx word3 X.ph phonetic2
我正在尝试设置循环,例如数据框中的空数据点被sub()跳过,但没有成功。所需的输出将是
X.lx X.ph
1 X.lx word X.ph phonetic
2 X.lx word2
3 X.lx word3 X.ph phonetic2
这是我的试用代码:
for(i in names(lexicon)){
lexicon[[i]][which(lexicon[[i]] != "")] <- sub("^", paste(names(lexicon[i]), " ", sep=""), lexicon[[i]][which(lexicon[[i]] != "")])
}
我收到此警告:
Warning messages:
1: In `[<-.factor`(`*tmp*`, which(lexicon[[i]] != ""), value = c(NA_integer_, :
invalid factor level, NA generated
如何正确实现要跳过的空单元格?
【问题讨论】:
-
您能否提供一些示例数据,如stackoverflow.com/questions/5963269/… 中所述?
-
您在这里使用
for循环的任何具体原因?请提供dput(lexicon))和您想要的输出
标签: r for-loop square-bracket