我一直试图将循环结果写入csv。我正在尝试在20列中的每一列中对数据进行排名。我正在使用的循环是:
for (i in 1:ncol(testing_file)) {
print(rank(testing_file[[i]]))
}
这适用于将预期结果打印到屏幕上。我已经尝试了在各种讨论中建议的很多方法将这个结果写入文件或数据框架,大多数没有运气。 我将只包含我最有希望的潜在客户,它只返回一列正确数据,列标题为“测试”:
for (i in 1:ncol(testing_file)) {
testing<- (rank(testing_file[[i]]))
testingdf <- as.data.frame(testing)
}
非常感谢任何帮助!
答案 0 :(得分:1)
我找到了一个有效的解决方案:
testage<- data.frame(matrix(, nrow=73, ncol=20)) #This creates an empty data
frame that the ranked results will go into
for (i in 1:ncol(testing_file)) {
testage[i] <- rank(testing_file[[i]])
print(testage[i])
} #this is the loop that ranks data within each column
colnames(testage) <- colnames(testing_file) #take the column names from the
original file and apply them to the ranked file.
答案 1 :(得分:0)
我对嵌套循环不好,所以我试试:
testing_file <- data.frame(x = 1:5, y = 15:11)
testing <- as.data.frame(lapply(seq_along(testing_file), function (x)
rank(testing_file[, x])))
> testing_file
x y
1 1 15
2 2 14
3 3 13
4 4 12
5 5 11
让你摆脱凌乱的嵌套循环。你想在写入csv之前检查rank()的结果吗?
或者只是将它包装在write.csv中,colnames将是原始的df colnames:
> write.csv(testing <- as.data.frame(lapply(seq_along(testing_file),
function (x) rank(testing_file[, x]))), "testing.csv", quote = FALSE)