我要把R扔出窗外。 R很可爱,但是有时候一个小问题要花几个小时才能解决。
得到这个df:
Product <- c("Basket", "Basket", "Basket", "Apple", "Apple", "Apple", "Corn", "Corn", "Corn", "Basket")
Place <- c("America", "Europe", "Africa", "America", "Europe", "Africa", "America", "Europe", "Africa", "America")
Detail <- c("Income", "Income", "Outcome", "Outcome", "Income", "Outcome", "Outcome", "Income", "Income", "Outcome")
Valuex <- c(1500, 2000, 2000, 4000, 5000, 700, 4000, 2000, 7000, 450)
df_test <- data.frame(Product, Place, Detail, Valuex, stringsAsFactors = FALSE)
然后,通过执行以下操作创建另一个
data.frame
:test <- df_test[1,]
最后,我使用
cbind
像这样:test[1,1:4] <- cbind(df_test[1,1:2], "Prueba", df_test[1, 4])
当我查看数据帧
test
时,我发现了这一点: Product Place Detail Valuex
1 Basket America 1 1500
而不是保存“Prueba”,保存1。
我已经尝试过
as.character("Prueba")
,c("Prueba")
,paste("Prueba")
,但仍然放1。有人可以帮我吗?
最佳答案
您一直看到1
代替Preuba
的原因是该值正在转换为因子,并且您看到的是液位值。您可以通过将test
的第一行分配给cbind
调用(已将stringsAsFactors
设置为false)来避免这种情况,例如
test <- df_test[1,]
df <- cbind(df_test[1,1:2], "Prueba", df_test[1, 4], stringsAsFactors=FALSE)
test[1,] <- df
test
Product Place Detail Valuex
1 Basket America Prueba 1500
Demo
但是,解决您的问题的更好方法是将一个向量分配给
test
数据帧的第一行:test[1,] <- c(df_test[1,1:2], "Prueba", df_test[1, 4])
关于r - cbind放置1而不是字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48970974/