【发布时间】:2014-03-21 04:37:49
【问题描述】:
我知道如何对从文件中读取的表进行一些转换:
data = read.table(file, sep=" ", header=TRUE, stringsAsFactors=F)
data_transformed=cbind(data[, 1], round(
data[, seq(from = 3, to = ncol(data), by = 3)] *100 /
data[, seq(from = 2, to = ncol(data), by = 3)], digits=2))
以及如何将“Inf”替换为“0”。
data_transformed[data_transformed==Inf] <- 0
现在,我需要将每个大于 100 的数字替换为 (value-2*(value-100)),这样 130 将被 70 替换,110 将被 90 替换。
我正在使用以下代码,但它不起作用:
data_transformed[data_transformed>100] <- (data_transformed-2*(data_transformed-100))
有什么建议可以解决吗?非常感谢。
我收到此错误:
Error in rowMeans(data_transformed, na.rm = TRUE) : 'x' must be numeric
【问题讨论】:
-
您在这里没有可重现的问题(而且我看不出如何调用
rowMeans),但我可以告诉您,您需要确保 RHS 上的向量正是[.]中条件表达式的 TRUE 值的长度。如果该 data.frame 具有任何因子或字符值,您也可能无法正确执行此操作......所以您确实需要查看str(data_transformed)
标签: r if-statement matrix subtraction