cbind 放置 1 而不是字符
cbind puts 1 instead of character
我要把 R 从 window 中剔除。 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
但是,一个可能更好的解决方法是将向量分配给 test
数据框的第一行:
test[1,] <- c(df_test[1,1:2], "Prueba", df_test[1, 4])
test[1,] = c(df_test[1,1:2], "Prueba", df_test[1, 4])
我要把 R 从 window 中剔除。 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
但是,一个可能更好的解决方法是将向量分配给 test
数据框的第一行:
test[1,] <- c(df_test[1,1:2], "Prueba", df_test[1, 4])
test[1,] = c(df_test[1,1:2], "Prueba", df_test[1, 4])