将小DataFrame导入大DataFrame时显示内存位置而非实际值的解决方法
解决DataFrame赋值时字符显示为数字的问题
嘿,这个问题我太熟悉啦!你遇到的其实是R里因子类型的经典坑——默认情况下read.table会把字符数据转成因子(factor),当你把因子赋值到新的DataFrame时,R会自动提取因子的水平编号(也就是你看到的数字),而不是实际的字符内容。下面给你几个简单的修正步骤:
1. 读取数据时禁用因子转换
修改read.table的调用,加上stringsAsFactors = FALSE参数,让读取的字符列保持原生的字符类型,不会被转成因子:
df <- read.table("msigdb.v5.2.symbols.txt", fill = TRUE, stringsAsFactors = FALSE)
2. 初始化大DataFrame时指定字符类型(可选但更稳妥)
原来的matrix(NA)默认是逻辑型,虽然赋值时会自动转换,但提前指定字符类型可以避免潜在的类型冲突问题:
data <- data.frame(matrix(NA_character_, ncol = 10000, nrow = 19337), stringsAsFactors = FALSE)
3. 用更高效的方式替代循环(可选)
你原来的for循环可以正常工作,但R里直接切片赋值会更高效,尤其是处理大量行的时候:
data[1:20, ] <- df[1:20, ]
完成这些操作后,你再查看data[1,1],就会显示实际的字符名称"AAANWWTGC_UNKNOWN",而不是数字啦!
内容的提问来源于stack exchange,提问作者Rohan Singhal
相关产品推荐
相关产品推荐

