我正在尝试创建一个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如何正确地实现要跳过的空单元格?
发布于 2014-09-04 13:14:38
lexicon[] <- mapply(function(x, n) {
ifelse(x == "", "", paste(n, x))
}, lexicon, names(lexicon))
lexicon
# X.lx X.ph
# 1 X.lx word X.ph phonetic
# 2 X.lx word2
# 3 X.lx word3 X.ph phonetic2https://stackoverflow.com/questions/25666170
复制相似问题