我有一些生物样本的测序数据。要读取的文件首先包含7个包含字符的列,因为它们具有基因名称和代码等。从第8列开始,我的样本包含计数数据,因此根据基因的数量分配给基因的数字给定的样本。
问题是我的CSV文件包含非整数值,所以我需要将它们转换为整数(as.integer
)。
如果我删除包含基因信息等的列并且只有值的矩阵,这绝对可以找到!但是,我需要基因信息,因此需要包含此信息的列,但如果我在整个数据框中执行as.integer
,则任何字符都会返回为NA,因此我也会丢失所有这些信息!
我正在努力,因为我猜我应该制作前7列as.characters
?或者将as.integer
函数应用到第8列,直到最后,但是我很难想到要执行此操作的代码!
答案 0 :(得分:0)
尝试使用lapply()
将as.integer()
应用于除前7列之外的所有列?
df[, -seq(1, 7)] <- lapply(df[, -seq(1, 7)], as.integer)
#result
> df
c1 c2 c3 c4 c5 c6 c7 c8 c9
1 G F Y M V M X 104 13
2 J E F O Q V H 67 11
3 N Q P L S K L 107 -13
4 U I C E M F Y 102 -14
5 E X Z S L B O 129 7
6 S K I Y Y C F 125 15
7 W O A P A G J 55 -2
8 M S H C J J V 30 17
9 L G X N N L B 129 7
10 B N V G Z T S 99 -12
示例数据:
set.seed(1)
df <- data.frame(
c1 = sample(LETTERS, 10),
c2 = sample(LETTERS, 10),
c3 = sample(LETTERS, 10),
c4 = sample(LETTERS, 10),
c5 = sample(LETTERS, 10),
c6 = sample(LETTERS, 10),
c7 = sample(LETTERS, 10),
c8 = rexp(10, rate = 0.01),
c9 = rnorm(10, sd = 20)
)
> df
c1 c2 c3 c4 c5 c6 c7 c8 c9
1 G F Y M V M X 104.94389 13.939268
2 J E F O Q V H 67.88807 11.133264
3 N Q P L S K L 107.98811 -13.775114
4 U I C E M F Y 102.82469 -14.149903
5 E X Z S L B O 129.22616 7.291639
6 S K I Y Y C F 125.31054 15.370658
7 W O A P A G J 55.46414 -2.246924
8 M S H C J J V 30.12830 17.622155
9 L G X N N L B 129.31247 7.962118
10 B N V G Z T S 99.45558 -12.240528